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

Wail Y. Alkowaileet updated ASTERIXDB-3266:
-------------------------------------------
    Description: 
SELECT for EVERY should not be pushed as it gives incorrect result.

QUERY:
{noformat}
SELECT VALUE r
FROM reviewsWithDynamicPrefixes r
WHERE customer_id NOT IN [5]; {noformat}
 

PLAN:
{noformat}
distribute result [$$r] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DISTRIBUTE_RESULT  |PARTITIONED|
  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
    project ([$$r]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
    -- STREAM_PROJECT  |PARTITIONED|
      select ($$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
      -- STREAM_SELECT  |PARTITIONED|
        project ([$$r, $$18]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
        -- STREAM_PROJECT  |PARTITIONED|
          subplan {
                    aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
                    -- AGGREGATE  |LOCAL|
                      select (not(if-missing-or-null(neq($$19, 5), false))) 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                      -- STREAM_SELECT  |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|
            assign [$$19] <- [$$r.getField("customer_id")] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
            -- ASSIGN  |PARTITIONED|
              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                data-scan []<-[$$r] <- Default.reviewsWithDynamicPrefixes 
prefix-filter on: not(if-missing-or-null(neq($$r.getField("customer_id"), 5), 
false)) [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}

  was:
SELECT in SUBPLAN should not be pushed as it can give incorrect result.

QUERY:
{noformat}
SELECT VALUE r
FROM reviewsWithDynamicPrefixes r
WHERE customer_id NOT IN [5]; {noformat}
 

PLAN:
{noformat}
distribute result [$$r] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- DISTRIBUTE_RESULT  |PARTITIONED|
  exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
    project ([$$r]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
    -- STREAM_PROJECT  |PARTITIONED|
      select ($$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
      -- STREAM_SELECT  |PARTITIONED|
        project ([$$r, $$18]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
        -- STREAM_PROJECT  |PARTITIONED|
          subplan {
                    aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
                    -- AGGREGATE  |LOCAL|
                      select (not(if-missing-or-null(neq($$19, 5), false))) 
[cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
                      -- STREAM_SELECT  |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|
            assign [$$19] <- [$$r.getField("customer_id")] [cardinality: 0.0, 
op-cost: 0.0, total-cost: 0.0]
            -- ASSIGN  |PARTITIONED|
              exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                data-scan []<-[$$r] <- Default.reviewsWithDynamicPrefixes 
prefix-filter on: not(if-missing-or-null(neq($$r.getField("customer_id"), 5), 
false)) [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}


> Avoid pushing SELECT for EVERY in columnar and external filters
> ---------------------------------------------------------------
>
>                 Key: ASTERIXDB-3266
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-3266
>             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
>
>
> SELECT for EVERY should not be pushed as it gives incorrect result.
> QUERY:
> {noformat}
> SELECT VALUE r
> FROM reviewsWithDynamicPrefixes r
> WHERE customer_id NOT IN [5]; {noformat}
>  
> PLAN:
> {noformat}
> distribute result [$$r] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
> -- DISTRIBUTE_RESULT  |PARTITIONED|
>   exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>     project ([$$r]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>     -- STREAM_PROJECT  |PARTITIONED|
>       select ($$18) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>       -- STREAM_SELECT  |PARTITIONED|
>         project ([$$r, $$18]) [cardinality: 0.0, op-cost: 0.0, total-cost: 
> 0.0]
>         -- STREAM_PROJECT  |PARTITIONED|
>           subplan {
>                     aggregate [$$18] <- [empty-stream()] [cardinality: 0.0, 
> op-cost: 0.0, total-cost: 0.0]
>                     -- AGGREGATE  |LOCAL|
>                       select (not(if-missing-or-null(neq($$19, 5), false))) 
> [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>                       -- STREAM_SELECT  |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|
>             assign [$$19] <- [$$r.getField("customer_id")] [cardinality: 0.0, 
> op-cost: 0.0, total-cost: 0.0]
>             -- ASSIGN  |PARTITIONED|
>               exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
>               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                 data-scan []<-[$$r] <- Default.reviewsWithDynamicPrefixes 
> prefix-filter on: not(if-missing-or-null(neq($$r.getField("customer_id"), 5), 
> false)) [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}



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

Reply via email to