>From Preetham Poluparthi <[email protected]>: Preetham Poluparthi has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21156?usp=email )
Change subject: [ASTERIXDB-3709][COMP] Switch PushSelectDown rule from pre-order to post-order ...................................................................... [ASTERIXDB-3709][COMP] Switch PushSelectDown rule from pre-order to post-order - user model changes: no - storage format changes: no - interface changes: no Ext-ref: MB-71042 Details : Changed SelectPushdown rule application from pre-order to post-order to ensure proper handling of multiple array index predicates. The earlier approach could lead to suboptimal index usage due to lack of intersection across array indexes. Plan changes in this patch belong to one of four categories : 1) Variables name changes , minor conjunction order changes, 2) replicate moved further up the plan, 3) join after group-by changed to group-by after join , 4) join order changes for queries like select * from A,B,C where jc1 and jc2. Change-Id: I814d2cc90744126dc4d0a5b09ec1d981556ff4e9 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21156 Tested-by: Jenkins <[email protected]> Reviewed-by: Ali Alsuliman <[email protected]> --- M asterixdb/asterix-app/src/test/resources/optimizerts/results/ASTERIXDB-2402.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ASTERIXDB-3682-field-access-in-join.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query3.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query4.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query5.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query6.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query7.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query8.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/atomic-and-array-queries/query9.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/select-quantified-queries/multiple-indexes/query2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/select-quantified-queries/use-case-1/query5.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/select-unnest-queries/closed/with-composite-sk/query1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/select-unnest-queries/open/multiple-indexes/query2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/array-index/select-unnest-queries/open/with-composite-sk/query1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-secondary-47.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-secondary-48.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-secondary-51.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-secondary-52.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-secondary-53.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-secondary-61.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-sidx-idxonly-10.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-ternary-inlj/query4.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q10.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q12.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q13.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q14.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q19.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q20.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q21.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q22.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q22_v2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q3.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q5.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q7.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/ch2/ch2_q8.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/hash-join-with-redundant-variable/hash-join-with-redundant-variable.1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/hints/broadcast_join_hint/broadcast_join_hint_1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/hints/broadcast_join_hint/broadcast_join_hint_2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/hints/broadcast_join_hint/broadcast_join_hint_3.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/ASTERIXDB-3572-1-equi-non-equi-condition.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/hash_join_exchange/hash_join_exchange.5.query.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/hash_join_exchange/hash_join_exchange.7.query.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/hash_join_exchange/hash_join_exchange.9.query.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/hash_join_exchange_1/hash_join_exchange_1.11.query.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/hash_join_exchange_1/hash_join_exchange_1.13.query.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/hash_join_exchange_1/hash_join_exchange_1.5.query.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/hash_join_exchange_1/hash_join_exchange_1.7.query.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/leftouterjoin/not_exists.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/loj-super-key_01.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/loj-super-key_02.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/meta/meta_in_subplan_1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/btree-index/non-enforced-composite-key/11.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-04.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/q08_group_by.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-3334.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue3316.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue3316_v2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1591.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast_v2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_v2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ASTERIXDB-2402.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ASTERIXDB-3682-field-access-in-join.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query3.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query4.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query5.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query8.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query9.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/select-quantified-queries/multiple-indexes/query2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/select-unnest-queries/closed/with-composite-sk/query1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/select-unnest-queries/open/multiple-indexes/query2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/select-unnest-queries/open/with-composite-sk/query1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index/btree-secondary-47.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index/btree-secondary-48.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index/btree-secondary-51.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index/btree-secondary-52.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index/btree-secondary-53.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index/btree-secondary-61.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index/btree-sidx-idxonly-10.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-ternary-inlj/query4.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q10.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q22_v2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hash-join-with-redundant-variable/hash-join-with-redundant-variable.1.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hash-join-with-redundant-variable/hash-join-with-redundant-variable.3.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index/non-enforced-composite-key/11.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-04.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query-ASTERIXDB-3334.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue3316.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue3316_v2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_v2.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_v2.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/cardinality-estimation/join-queries/join-queries.8.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.010.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.011.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/column/pushdown/replicate/replicate.021.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/range-filter-intersect/range-filter-intersect.003.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.211.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/avro/one-field/one-field.221.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.211.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/external-dataset/common/dynamic-prefixes/one-field/one-field.221.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range-02/btree-index-range-02.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range-02/btree-index-range-02.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range-02/btree-index-range-02.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range-02/btree-index-range-02.13.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range-02/btree-index-range-02.16.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range-02/btree-index-range-02.18.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range/btree-index-range.04.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range/btree-index-range.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-range/btree-index-range.10.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/tpcds/q90/q90.2.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.04.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.09.plan M asterixdb/asterix-app/src/test/resources/runtimets/results/tpch/query-plans/query-plans.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/cardinality-estimation/join-queries/join-queries.8.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range-02/btree-index-range-02.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range-02/btree-index-range-02.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range-02/btree-index-range-02.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range-02/btree-index-range-02.13.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range-02/btree-index-range-02.16.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range-02/btree-index-range-02.18.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range/btree-index-range.04.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range/btree-index-range.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/index-selection/btree-index-range/btree-index-range.10.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/limit/push-limit-to-primary-scan-select/push-limit-to-primary-scan-select.8.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpcds/q90/q90.2.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.04.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.09.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/tpch/query-plans/query-plans.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/cardinality-estimation/join-queries/join-queries.8.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range-02/btree-index-range-02.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range-02/btree-index-range-02.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range-02/btree-index-range-02.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range-02/btree-index-range-02.13.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range-02/btree-index-range-02.16.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range-02/btree-index-range-02.18.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range/btree-index-range.04.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range/btree-index-range.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/index-selection/btree-index-range/btree-index-range.10.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpcds/q90/q90.2.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.04.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.08.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.09.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_column/tpch/query-plans/query-plans.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/cardinality-estimation/join-queries/join-queries.8.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/index-selection/btree-index-range-02/btree-index-range-02.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/index-selection/btree-index-range-02/btree-index-range-02.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/index-selection/btree-index-range-02/btree-index-range-02.13.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/cardinality-estimation/join-queries/join-queries.8.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/index-selection/btree-index-range-02/btree-index-range-02.06.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/index-selection/btree-index-range-02/btree-index-range-02.11.plan M asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/index-selection/btree-index-range-02/btree-index-range-02.13.plan M hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java 171 files changed, 8,674 insertions(+), 8,111 deletions(-) Approvals: Jenkins: Verified Ali Alsuliman: Looks good to me, approved -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21156?usp=email To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: asterixdb Gerrit-Branch: lumina Gerrit-Change-Id: I814d2cc90744126dc4d0a5b09ec1d981556ff4e9 Gerrit-Change-Number: 21156 Gerrit-PatchSet: 13 Gerrit-Owner: Preetham Poluparthi <[email protected]> Gerrit-Reviewer: Ali Alsuliman <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Preetham Poluparthi <[email protected]>
