You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2024/01/16 20:51:00 UTC

[jira] [Commented] (ASTERIXDB-3339) Ensure full predicate is pushed on broken disjuncts

    [ https://issues.apache.org/jira/browse/ASTERIXDB-3339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17807437#comment-17807437 ] 

ASF subversion and git services commented on ASTERIXDB-3339:
------------------------------------------------------------

Commit 397cac604ecf09eafac4ee8d4d2de7686ce24e06 in asterixdb's branch refs/heads/master from Wail Alkowaileet
[ https://gitbox.apache.org/repos/asf?p=asterixdb.git;h=397cac604e ]

[ASTERIXDB-3339][COMP] Fix filter pushdown with subplans

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Ensure that SELECT conditions in subplans are not
blindly pushed into data-scan.

Change-Id: Ib309ac7d756dd60b33e393ed44b953d2e773aa84
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18090
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Wail Alkowaileet <wa...@gmail.com>
Reviewed-by: Ali Alsuliman <al...@gmail.com>
Tested-by: Wail Alkowaileet <wa...@gmail.com>


> Ensure full predicate is pushed on broken disjuncts
> ---------------------------------------------------
>
>                 Key: ASTERIXDB-3339
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-3339
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: COMP - Compiler
>    Affects Versions: 0.9.9
>            Reporter: Wail Y. Alkowaileet
>            Assignee: Wail Y. Alkowaileet
>            Priority: Major
>             Fix For: 0.9.9
>
>
> Query:
> {noformat}
> SELECT VALUE COUNT(*)
> FROM orders p
> WHERE p.arrayOrObject.text = "7"
>    OR (SOME ao IN p.arrayOrObject SATISFIES ao.text = "1") {noformat}
> Plan:
> {noformat}
> distribute result [$$53] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- DISTRIBUTE_RESULT  |UNPARTITIONED|
>   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
>     aggregate [$$53] <- [agg-sql-sum($$58)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>     -- AGGREGATE  |UNPARTITIONED|
>       exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>       -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
>         aggregate [$$58] <- [agg-sql-count(1)] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>         -- AGGREGATE  |PARTITIONED|
>           select (or(eq($$57.getField("text"), "7"), $$44)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>           -- STREAM_SELECT  |PARTITIONED|
>             subplan {
>                       aggregate [$$44] <- [non-empty-stream()] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                       -- AGGREGATE  |LOCAL|
>                         select (eq($$55, "1")) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                         -- STREAM_SELECT  |LOCAL|
>                           assign [$$55] <- [$$ao.getField("text")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                           -- ASSIGN  |LOCAL|
>                             unnest $$ao <- scan-collection($$57) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                             -- UNNEST  |LOCAL|
>                               nested tuple source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                               -- NESTED_TUPLE_SOURCE  |LOCAL|
>                    } [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>             -- SUBPLAN  |PARTITIONED|
>               project ([$$57]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>               -- STREAM_PROJECT  |PARTITIONED|
>                 assign [$$57] <- [$$p.getField("arrayOrObject")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                 -- ASSIGN  |PARTITIONED|
>                   project ([$$p]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                   -- STREAM_PROJECT  |PARTITIONED|
>                     exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                       data-scan []<-[$$52, $$p] <- ColumnCH2Tiny.orders project ({arrayOrObject:<[{text:any}],{text:any}>}) filter on: eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1") range-filter on: eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1") [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                       -- DATASOURCE_SCAN  |PARTITIONED|
>                         exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                           empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|{noformat}
>  
> Pushed columnar filter: eq(scan-collection($$p.getField("arrayOrObject")).getField("text"), "1") is incomplete – making the query producing incorrect result



--
This message was sent by Atlassian Jira
(v8.20.10#820010)