Wail Y. Alkowaileet created ASTERIXDB-3339:
----------------------------------------------

             Summary: 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
             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