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:15:58 UTC

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

Wenhai created ASTERIXDB-1718:
---------------------------------

             Summary: Condition expression propagation in general cases.
                 Key: ASTERIXDB-1718
                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-1718
             Project: Apache AsterixDB
          Issue Type: Bug
         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)