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)