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

Ian Maxon updated ASTERIXDB-3339:
---------------------------------
    Labels: triaged  (was: )

> 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
>              Labels: triaged
>             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)

Reply via email to