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)