You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Wenhai (JIRA)" <ji...@apache.org> on 2016/10/29 17:19:58 UTC

[jira] [Updated] (ASTERIXDB-1718) Condition expression propagation in general cases.

     [ https://issues.apache.org/jira/browse/ASTERIXDB-1718?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Wenhai updated ASTERIXDB-1718:
------------------------------
    Issue Type: Improvement  (was: Bug)

> Condition expression propagation in general cases.
> --------------------------------------------------
>
>                 Key: ASTERIXDB-1718
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-1718
>             Project: Apache AsterixDB
>          Issue Type: Improvement
>         Environment: Common systems.
>            Reporter: Wenhai
>
> Given a query with an inlined condition such as tpch-q17:
> {noformat}
> use dataverse tpch;
> declare function tmp(){
>   for $l in dataset('LineItem')
>   group by $l_partkey := $l.l_partkey with $l
>   return {
>     "t_partkey": $l_partkey,
>     "t_avg_quantity": 0.2 * avg(for $i in $l return $i.l_quantity)
>   }
> }
> sum(
>   for $l in dataset('LineItem')
>   for $p in dataset('Part')
>   where  $p.p_partkey = $l.l_partkey and $p.p_container = 'MED BOX'
>   for $t in tmp()
>   where $l.l_partkey = $t.t_partkey
>     and $l.l_quantity < $t.t_avg_quantity
>   return $l.l_extendedprice
> )/7.0
> {noformat}
> We should provide a general strategy to push the required primarykey join down to the downstreaming inlined operators. Just run the query as following:
> {noformat}
> use dataverse tpch;
> declare function tmp(){
>   for $l in dataset('LineItem')
>   for $p in dataset('Part')
>   where  $p.p_partkey = $l.l_partkey and $p.p_container = 'MED BOX'
>   group by $l_partkey := $l.l_partkey with $l
>   return {
>     "t_partkey": $l_partkey,
>     "t_avg_quantity": 0.2 * avg(for $i in $l return $i.l_quantity)
>   }
> }
> sum(
>   for $l in dataset('LineItem')
>   for $p in dataset('Part')
>   where  $p.p_partkey = $l.l_partkey and $p.p_container = 'MED BOX'
>   for $t in tmp()
>   where $l.l_partkey = $t.t_partkey
>     and $l.l_quantity < $t.t_avg_quantity
>   return $l.l_extendedprice
> )/7.0
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)