This is an automated email from the ASF dual-hosted git repository. alsuliman pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 40419aa5437f4489ec84861f2dfaf54cecd2fb00 Merge: 50d67194d4 a15494c44c Author: preetham0202 <[email protected]> AuthorDate: Thu Feb 13 23:36:29 2025 +0530 Merge branch 'gerrit/ionic' into 'master' Change-Id: I7295ae44db8341e6f38c4a73a04bc9412cfa3136 .../rules/PushValueAccessAndFilterDownRule.java | 2 + .../asterix/optimizer/rules/cbo/JoinCondition.java | 1 + .../asterix/optimizer/rules/cbo/JoinEnum.java | 7 +- .../apache/asterix/optimizer/rules/cbo/Stats.java | 172 ++-- .../DeltaTableFilterPushdownProcessor.java | 64 ++ .../org/apache/asterix/test/common/TestHelper.java | 55 +- .../external_dataset/ExternalDatasetTestUtils.java | 3 +- .../deltalake/DeltaTableGenerator.java | 146 +++ .../asterix/test/optimizer/OptimizerTest.java | 9 +- .../optimizerts/results/ASTERIXDB-2402.plan | 217 ++++- .../aggregate-sql-sugar/array_agg/array_agg.1.plan | 6 + .../distinct_mixed/distinct_mixed.10.plan | 40 +- .../distinct_mixed/distinct_mixed.11.plan | 49 +- .../distinct_mixed/distinct_mixed.12.plan | 46 +- .../distinct_mixed/distinct_mixed.13.plan | 66 +- .../distinct_mixed/distinct_mixed.14.plan | 74 +- .../distinct_mixed/distinct_mixed.15.plan | 162 ++++ .../distinct_mixed/distinct_mixed.16.plan | 57 +- .../distinct_mixed/distinct_mixed.17.plan | 104 +- .../distinct_mixed/distinct_mixed.3.plan | 27 +- .../distinct_mixed/distinct_mixed.4.plan | 27 +- .../distinct_mixed/distinct_mixed.5.plan | 63 +- .../distinct_mixed/distinct_mixed.6.plan | 65 +- .../distinct_mixed/distinct_mixed.7.plan | 146 ++- .../distinct_mixed/distinct_mixed.8.plan | 209 +++- .../distinct_mixed/distinct_mixed.9.plan | 40 +- .../agg_filter_01/agg_filter_01.10.plan | 33 +- .../agg_filter_01/agg_filter_01.3.plan | 16 +- .../agg_filter_01/agg_filter_01.4.plan | 33 +- .../agg_filter_01/agg_filter_01.5.plan | 79 +- .../agg_filter_01/agg_filter_01.6.plan | 32 +- .../agg_filter_01/agg_filter_01.7.plan | 59 +- .../agg_filter_01/agg_filter_01.8.plan | 34 +- .../agg_filter_01/agg_filter_01.9.plan | 16 +- .../results/aggregate/constant-agg.plan | 12 +- .../results/aggregate/constant-gby-agg.plan | 30 +- .../results/aggregate/count-dataset.plan | 11 +- .../results/aggregate/list-dataset.plan | 11 +- .../results/aggregate/query-ASTERIXDB-1626-2.plan | 15 +- .../results/aggregate/query-ASTERIXDB-1626-3.plan | 15 +- .../results/aggregate/query-ASTERIXDB-1626.plan | 15 +- .../optimizerts/results/aggregate/serial-agg.plan | 30 +- .../optimizerts/results/any-and-every-1.plan | 22 +- .../optimizerts/results/any-and-every-2.plan | 32 +- .../optimizerts/results/any-and-every-3.plan | 23 +- .../atomic-and-array-queries/query1.plan | 25 +- .../atomic-and-array-queries/query2.plan | 25 +- .../atomic-and-array-queries/query3.plan | 28 +- .../atomic-and-array-queries/query4.plan | 36 +- .../atomic-and-array-queries/query5.plan | 48 +- .../atomic-and-array-queries/query6.plan | 34 +- .../atomic-and-array-queries/query7.plan | 34 +- .../atomic-and-array-queries/query8.plan | 45 +- .../atomic-and-array-queries/query9.plan | 57 +- .../join-quantified-queries/use-case-1/query1.plan | 45 +- .../join-quantified-queries/use-case-1/query2.plan | 45 +- .../join-quantified-queries/use-case-1/query3.plan | 45 +- .../join-quantified-queries/use-case-1/query4.plan | 76 +- .../join-quantified-queries/use-case-1/query5.plan | 44 +- .../join-quantified-queries/use-case-2/query1.plan | 45 +- .../join-quantified-queries/use-case-2/query2.plan | 44 +- .../join-quantified-queries/use-case-2/query3.plan | 39 +- .../join-quantified-queries/use-case-3/query1.plan | 46 +- .../join-quantified-queries/use-case-3/query2.plan | 45 +- .../join-quantified-queries/use-case-4/query1.plan | 56 +- .../join-quantified-queries/use-case-4/query2.plan | 56 +- .../join-quantified-queries/use-case-4/query3.plan | 54 +- .../join-quantified-queries/use-case-4/query4.plan | 94 +- .../join-unnest-queries/use-case-1/query1.plan | 33 +- .../join-unnest-queries/use-case-1/query2.plan | 33 +- .../join-unnest-queries/use-case-1/query3.plan | 36 +- .../join-unnest-queries/use-case-1/query4.plan | 38 +- .../join-unnest-queries/use-case-2/query1.plan | 33 +- .../join-unnest-queries/use-case-2/query2.plan | 33 +- .../join-unnest-queries/use-case-2/query3.plan | 36 +- .../join-unnest-queries/use-case-2/query4.plan | 38 +- .../join-unnest-queries/use-case-3/query1.plan | 33 +- .../join-unnest-queries/use-case-3/query2.plan | 33 +- .../join-unnest-queries/use-case-3/query3.plan | 33 +- .../join-unnest-queries/use-case-3/query4.plan | 36 +- .../join-unnest-queries/use-case-3/query5.plan | 38 +- .../join-unnest-queries/use-case-4/query1.plan | 35 +- .../join-unnest-queries/use-case-4/query2.plan | 36 +- .../join-unnest-queries/use-case-4/query3.plan | 35 +- .../join-unnest-queries/use-case-4/query4.plan | 38 +- .../join-unnest-queries/use-case-4/query5.plan | 40 +- .../multiple-indexes/query1.plan | 50 +- .../multiple-indexes/query2.plan | 63 +- .../multiple-quantifiers/query1.plan | 36 +- .../multiple-quantifiers/query10.plan | 44 +- .../multiple-quantifiers/query11.plan | 54 +- .../multiple-quantifiers/query2.plan | 36 +- .../multiple-quantifiers/query3.plan | 38 +- .../multiple-quantifiers/query4.plan | 38 +- .../multiple-quantifiers/query5.plan | 52 +- .../multiple-quantifiers/query6.plan | 52 +- .../multiple-quantifiers/query7.plan | 36 +- .../multiple-quantifiers/query8.plan | 48 +- .../multiple-quantifiers/query9.plan | 48 +- .../use-case-1/query1.plan | 34 +- .../use-case-1/query2.plan | 37 +- .../use-case-1/query3.plan | 38 +- .../use-case-1/query4.plan | 36 +- .../use-case-1/query5.plan | 27 +- .../use-case-2/query1.plan | 34 +- .../use-case-2/query2.plan | 37 +- .../use-case-2/query3.plan | 36 +- .../use-case-2/query4.plan | 25 +- .../use-case-2/query5.plan | 25 +- .../use-case-3/query1.plan | 35 +- .../use-case-3/query2.plan | 35 +- .../use-case-3/query3.plan | 34 +- .../use-case-3/query4.plan | 23 +- .../use-case-4/query1.plan | 45 +- .../use-case-4/query2.plan | 45 +- .../use-case-4/query3.plan | 44 +- .../use-case-4/query4.plan | 44 +- .../use-case-4/query5.plan | 43 +- .../use-case-4/query6.plan | 34 +- .../use-case-4/query7.plan | 46 +- .../closed/use-case-1/query1.plan | 24 +- .../closed/use-case-1/query2.plan | 27 +- .../closed/use-case-2/query1.plan | 24 +- .../closed/use-case-2/query2.plan | 27 +- .../closed/use-case-3/query1.plan | 24 +- .../closed/use-case-3/query2.plan | 28 +- .../closed/use-case-3/query3.plan | 24 +- .../closed/use-case-4/query1.plan | 26 +- .../closed/use-case-4/query2.plan | 29 +- .../closed/with-3-level-record-path/query1.plan | 24 +- .../closed/with-3-level-record-path/query2.plan | 27 +- .../closed/with-composite-pk/query1.plan | 24 +- .../closed/with-composite-pk/query2.plan | 27 +- .../closed/with-composite-sk/query1.plan | 25 +- .../closed/with-composite-sk/query2.plan | 28 +- .../closed/with-composite-sk/query3.plan | 17 +- .../closed/with-filter-fields/query1.plan | 25 +- .../closed/with-filter-fields/query2.plan | 27 +- .../open/complex-structures/query1.plan | 24 +- .../open/complex-structures/query2.plan | 24 +- .../open/complex-structures/query3.plan | 26 +- .../open/complex-structures/query4.plan | 26 +- .../open/complex-structures/query5.plan | 24 +- .../open/complex-structures/query6.plan | 24 +- .../open/complex-structures/query7.plan | 26 +- .../open/complex-structures/query8.plan | 26 +- .../open/multiple-indexes/query1.plan | 39 +- .../open/multiple-indexes/query2.plan | 52 +- .../open/use-case-1/query1.plan | 24 +- .../open/use-case-1/query2.plan | 27 +- .../open/use-case-2/query1.plan | 24 +- .../open/use-case-2/query2.plan | 27 +- .../open/use-case-3/query1.plan | 24 +- .../open/use-case-3/query2.plan | 28 +- .../open/use-case-3/query3.plan | 24 +- .../open/use-case-4/query1.plan | 26 +- .../open/use-case-4/query2.plan | 29 +- .../open/with-3-level-record-path/query1.plan | 24 +- .../open/with-3-level-record-path/query2.plan | 27 +- .../open/with-composite-sk/query1.plan | 25 +- .../hints-indexnl-params-3.plan | 29 +- .../hints-indexnl-params-4.plan | 26 +- .../hints-indexnl-params-5.plan | 26 +- .../hints-indexnl-params-6.plan | 26 +- .../hints-indexnl-params-7.plan | 26 +- .../hints-indexnl-params-8.plan | 29 +- ...join-probe-pidx-with-join-btree-sidx_01_ps.plan | 128 ++- ...terjoin-probe-pidx-with-join-btree-sidx_02.plan | 40 +- ...join-probe-pidx-with-join-btree-sidx_02_ps.plan | 90 +- ...be-pidx-with-join-btree-sidx_03-index-only.plan | 54 +- ...terjoin-probe-pidx-with-join-btree-sidx_03.plan | 35 +- .../btree-index-join/primary-between-join_01.plan | 17 +- .../btree-index-join/primary-equi-join_04.plan | 19 +- .../secondary-equi-join-multiindex.plan | 26 +- .../btree-index-join/secondary-equi-join_02.plan | 26 +- .../btree-index-join/secondary-equi-join_03.plan | 26 +- .../btree-index-join/secondary-equi-join_04.plan | 39 +- .../btree-index-join/secondary-equi-join_05.plan | 21 +- .../btree-index-join/secondary-equi-join_06.plan | 46 +- .../btree-index-composite-key-04.plan | 35 +- .../cast-default-null/cast-default-null-01.plan | 14 +- .../cast-default-null/cast-default-null-02.plan | 23 +- .../cast-default-null/cast-default-null-03.plan | 14 +- .../cast-default-null/cast-default-null-04.plan | 14 +- .../cast-default-null/cast-default-null-05.plan | 30 +- .../cast-default-null/cast-default-null-06.plan | 25 +- .../cast-default-null/cast-default-null-07.plan | 25 +- .../cast-default-null/cast-default-null-08.plan | 25 +- .../cast-default-null/cast-default-null-09.plan | 25 +- .../cast-default-null/cast-default-null-10.plan | 23 +- .../cast-default-null/cast-default-null-11.plan | 23 +- .../cast-default-null/cast-default-null-12.plan | 23 +- .../cast-default-null/cast-default-null-13.plan | 23 +- .../cast-default-null/cast-default-null-14.plan | 23 +- .../cast-default-null/cast-default-null-15.plan | 23 +- .../cast-default-null/cast-default-null-16.plan | 14 +- .../cast-default-null/cast-default-null-17.plan | 14 +- .../cast-default-null/cast-default-null-18.plan | 14 +- .../cast-default-null/cast-default-null-19.plan | 30 +- .../cast-default-null/cast-default-null-20.plan | 23 +- .../cast-default-null/cast-default-null-21.plan | 14 +- .../cast-default-null/cast-default-null-22.plan | 14 +- .../cast-default-null/cast-default-null-23.plan | 23 +- .../cast-default-null/cast-default-null-24.plan | 35 +- .../cast-default-null/cast-default-null-25.plan | 23 +- .../disjunctive-predicate-1.plan | 16 +- .../disjunctive-predicate-2.plan | 19 +- .../disjunctive-predicate-3.plan | 17 +- .../disjunctive-predicate-4.plan | 12 +- .../disjunctive-predicate-5.plan | 13 +- .../function-on-pk/function-on-pk-01.plan | 10 +- .../function-on-pk/function-on-pk-02.plan | 10 +- .../hints-skip-index/hints-skip-index-10.plan | 22 +- .../hints-skip-index/hints-skip-index-11.plan | 19 +- .../hints-skip-index/hints-skip-index-12.plan | 23 +- .../hints-skip-index/hints-skip-index-13.plan | 22 +- .../hints-skip-index/hints-skip-index-3.plan | 13 +- .../hints-skip-index/hints-skip-index-4.plan | 22 +- .../hints-skip-index/hints-skip-index-5.plan | 13 +- .../hints-skip-index/hints-skip-index-6.plan | 22 +- .../hints-skip-index/hints-skip-index-7.plan | 35 +- .../hints-skip-index/hints-skip-index-8.plan | 22 +- .../hints-skip-index/hints-skip-index-9.plan | 22 +- .../hints-use-index/hints-use-index-10.plan | 22 +- .../hints-use-index/hints-use-index-11.plan | 22 +- .../hints-use-index/hints-use-index-12.plan | 41 +- .../hints-use-index/hints-use-index-13.plan | 22 +- .../hints-use-index/hints-use-index-14.plan | 22 +- .../hints-use-index/hints-use-index-15.plan | 22 +- .../hints-use-index/hints-use-index-16.plan | 41 +- .../hints-use-index/hints-use-index-17.plan | 22 +- .../hints-use-index/hints-use-index-18.plan | 22 +- .../hints-use-index/hints-use-index-19.plan | 22 +- .../hints-use-index/hints-use-index-20.plan | 28 +- .../hints-use-index/hints-use-index-21.plan | 28 +- .../hints-use-index/hints-use-index-3.plan | 22 +- .../hints-use-index/hints-use-index-4.plan | 41 +- .../hints-use-index/hints-use-index-5.plan | 41 +- .../hints-use-index/hints-use-index-6.plan | 22 +- .../hints-use-index/hints-use-index-7.plan | 22 +- .../hints-use-index/hints-use-index-8.plan | 35 +- .../hints-use-index/hints-use-index-9.plan | 35 +- .../intersection-misc/intersection-misc-01.plan | 141 ++- .../intersection-misc/intersection-misc-02.plan | 127 ++- .../intersection-misc/intersection-misc-03.plan | 122 ++- .../intersection-misc/intersection-misc-04.plan | 112 ++- .../btree-index/btree-composite-key-03.plan | 21 +- .../results/btree-index/btree-secondary-33.plan | 21 +- .../results/btree-index/btree-secondary-34.plan | 21 +- .../results/btree-index/btree-secondary-35.plan | 21 +- .../results/btree-index/btree-secondary-36.plan | 21 +- .../results/btree-index/btree-secondary-40.plan | 21 +- .../results/btree-index/btree-secondary-42.plan | 21 +- .../results/btree-index/btree-secondary-43.plan | 21 +- .../results/btree-index/btree-secondary-44.plan | 21 +- .../results/btree-index/btree-secondary-45.plan | 21 +- .../results/btree-index/btree-secondary-46.plan | 21 +- .../results/btree-index/btree-secondary-47.plan | 20 +- .../results/btree-index/btree-secondary-48.plan | 20 +- .../results/btree-index/btree-secondary-49.plan | 21 +- .../results/btree-index/btree-secondary-51.plan | 20 +- .../results/btree-index/btree-secondary-52.plan | 20 +- .../results/btree-index/btree-secondary-53.plan | 20 +- .../results/btree-index/btree-secondary-54.plan | 21 +- .../results/btree-index/btree-secondary-55.plan | 21 +- .../results/btree-index/btree-secondary-56.plan | 21 +- .../results/btree-index/btree-secondary-57.plan | 21 +- .../results/btree-index/btree-secondary-58.plan | 20 +- .../results/btree-index/btree-secondary-59.plan | 20 +- .../results/btree-index/btree-secondary-60.plan | 21 +- .../results/btree-index/btree-secondary-61.plan | 20 +- .../results/btree-index/btree-secondary-62.plan | 21 +- .../results/btree-index/btree-secondary-63.plan | 21 +- .../results/btree-index/btree-secondary-68.plan | 36 +- .../results/btree-index/btree-secondary-68_ps.plan | 78 +- .../btree-sidx-idxonly-01-disable-idxonly.plan | 23 +- .../btree-sidx-idxonly-01-disable-idxonly_ps.plan | 52 +- .../results/btree-index/btree-sidx-idxonly-01.plan | 35 +- .../btree-index/btree-sidx-idxonly-01_ps.plan | 76 +- .../results/btree-index/btree-sidx-idxonly-10.plan | 37 +- .../results/btree-ternary-inlj/query1.plan | 43 +- .../results/btree-ternary-inlj/query2.plan | 44 +- .../results/btree-ternary-inlj/query3.plan | 59 +- .../results/btree-ternary-inlj/query4.plan | 36 +- .../resources/optimizerts/results/ch2/ch2_q1.plan | 33 +- .../resources/optimizerts/results/ch2/ch2_q10.plan | 64 +- .../resources/optimizerts/results/ch2/ch2_q11.plan | 125 ++- .../resources/optimizerts/results/ch2/ch2_q12.plan | 33 +- .../resources/optimizerts/results/ch2/ch2_q13.plan | 66 +- .../resources/optimizerts/results/ch2/ch2_q14.plan | 31 +- .../resources/optimizerts/results/ch2/ch2_q15.plan | 132 ++- .../resources/optimizerts/results/ch2/ch2_q16.plan | 71 +- .../resources/optimizerts/results/ch2/ch2_q17.plan | 71 +- .../resources/optimizerts/results/ch2/ch2_q18.plan | 54 +- .../resources/optimizerts/results/ch2/ch2_q19.plan | 32 +- .../resources/optimizerts/results/ch2/ch2_q2.plan | 171 +++- .../resources/optimizerts/results/ch2/ch2_q20.plan | 121 ++- .../resources/optimizerts/results/ch2/ch2_q21.plan | 124 ++- .../resources/optimizerts/results/ch2/ch2_q22.plan | 118 ++- .../resources/optimizerts/results/ch2/ch2_q3.plan | 62 +- .../resources/optimizerts/results/ch2/ch2_q4.plan | 44 +- .../resources/optimizerts/results/ch2/ch2_q5.plan | 104 +- .../resources/optimizerts/results/ch2/ch2_q6.plan | 17 +- .../resources/optimizerts/results/ch2/ch2_q7.plan | 107 +- .../resources/optimizerts/results/ch2/ch2_q8.plan | 136 ++- .../resources/optimizerts/results/ch2/ch2_q9.plan | 87 +- .../resources/optimizerts/results/collocated.plan | 22 +- .../results/column-pushdown/meta.001.plan | 125 ++- .../optimizerts/results/common-expr-01.plan | 74 +- .../composite-key/composite-prefix-low-high.plan | 12 +- .../optimizerts/results/copy-to/copy-to.0.plan | 33 +- .../optimizerts/results/copy-to/copy-to.1.plan | 35 +- .../optimizerts/results/copy-to/copy-to.2.plan | 14 +- .../optimizerts/results/copy-to/copy-to.3.plan | 15 +- .../optimizerts/results/cust_group_no_agg.plan | 19 +- .../optimizerts/results/denorm-cust-order.plan | 33 +- .../results/disjunction-to-join-delete-3.plan | 29 +- .../results/external-cross-product.plan | 48 +- .../extract-common-operators.01.plan | 100 +- ...nverted-btree-search-return-optional-field.plan | 31 +- .../optimizerts/results/filter_on_meta_0.plan | 12 +- .../optimizerts/results/filter_on_meta_1.plan | 12 +- .../optimizerts/results/filter_on_meta_2.plan | 12 +- .../optimizerts/results/filter_on_meta_3.plan | 12 +- .../optimizerts/results/filter_on_meta_4.plan | 12 +- .../optimizerts/results/filter_on_meta_5.plan | 12 +- .../results/filter_on_meta_with_idx_0.plan | 57 +- .../results/filter_on_meta_with_idx_1.plan | 26 +- .../results/filter_on_meta_with_idx_2.plan | 26 +- .../results/filter_on_meta_with_idx_3.plan | 26 +- .../resources/optimizerts/results/flwr/at07.plan | 39 +- .../optimizerts/results/flwr/select-let-1.plan | 6 +- .../results/gby_partitioning_property_01.plan | 43 +- .../results/group-by/gby-case-01.3.plan | 30 +- .../results/group-by/gby-case-01.4.plan | 30 +- .../results/group-by/grouping-sets-1.1.plan | 144 ++- .../results/group-by/grouping-sets-1.2.plan | 425 ++++++-- .../optimizerts/results/group-by/listify-3.1.plan | 36 + .../results/group-by/sugar-06-distinct.plan | 30 +- .../hash-join-with-redundant-variable.1.plan | 79 +- .../hash-join-with-redundant-variable.2.plan | 38 +- .../hash-join-with-redundant-variable.3.plan | 38 +- .../hash-join-with-redundant-variable.4.plan | 26 +- .../broadcast_join_hint/broadcast_join_hint_1.plan | 24 +- .../broadcast_join_hint/broadcast_join_hint_2.plan | 24 +- .../broadcast_join_hint/broadcast_join_hint_3.plan | 24 +- .../broadcast_join_hint/broadcast_join_hint_4.plan | 37 +- .../broadcast_join_hint/broadcast_join_hint_5.plan | 37 +- .../broadcast_join_hint/broadcast_join_hint_6.plan | 37 +- .../broadcast_join_hint/broadcast_join_hint_7.plan | 37 +- .../hints/hashjoin_hint/hashjoin_hint_1.plan | 37 +- .../hints/hashjoin_hint/hashjoin_hint_2.plan | 37 +- .../hints/hashjoin_hint/hashjoin_hint_3.plan | 37 +- .../hints/hashjoin_hint/hashjoin_hint_4.plan | 37 +- .../hints/hashjoin_hint/hashjoin_hint_5.plan | 37 +- .../hints/hashjoin_hint/hashjoin_hint_6.plan | 37 +- .../index-through-object.1.plan | 21 +- .../index-through-object.10.plan | 23 +- .../index-through-object.11.plan | 43 +- .../index-through-object.2.plan | 21 +- .../index-through-object.3.plan | 21 +- .../index-through-object.4.plan | 21 +- .../index-through-object.5.plan | 12 +- .../index-through-object.6.plan | 23 +- .../index-through-object.7.plan | 12 +- .../index-through-object.8.plan | 21 +- .../index-through-object.9.plan | 46 +- .../inline-single-reference_1.plan | 14 +- .../inline-single-reference_2.plan | 11 +- .../inline-single-reference_3.plan | 12 +- .../inline-single-reference_4.plan | 27 +- .../results/insert-and-scan-dataset.plan | 16 +- .../results/introhashpartitionmerge.plan | 26 +- .../inverted-index-basic/ngram-contains-panic.plan | 13 +- .../ngram-contains-panic_ps.plan | 32 +- .../inverted-index-basic/ngram-contains.plan | 20 +- .../inverted-index-basic/ngram-contains_ps.plan | 54 +- .../ngram-edit-distance-check.plan | 19 +- .../inverted-index-basic/ngram-edit-distance.plan | 19 +- .../ngram-fuzzyeq-edit-distance.plan | 19 +- .../ngram-fuzzyeq-jaccard.plan | 19 +- .../inverted-index-basic/ngram-jaccard-check.plan | 19 +- .../inverted-index-basic/ngram-jaccard.plan | 19 +- .../olist-edit-distance-check-panic.plan | 13 +- .../olist-edit-distance-check-panic_ps.plan | 32 +- .../olist-edit-distance-check.plan | 20 +- .../olist-edit-distance-check_ps.plan | 54 +- .../olist-edit-distance-panic.plan | 13 +- .../olist-edit-distance-panic_ps.plan | 32 +- .../inverted-index-basic/olist-edit-distance.plan | 20 +- .../olist-edit-distance_ps.plan | 54 +- .../olist-fuzzyeq-edit-distance.plan | 20 +- .../olist-fuzzyeq-edit-distance_ps.plan | 54 +- .../olist-fuzzyeq-jaccard.plan | 19 +- .../inverted-index-basic/olist-jaccard-check.plan | 19 +- .../inverted-index-basic/olist-jaccard.plan | 19 +- .../ulist-fuzzyeq-jaccard.plan | 19 +- .../inverted-index-basic/ulist-jaccard-check.plan | 19 +- .../inverted-index-basic/ulist-jaccard.plan | 19 +- .../inverted-index-basic/word-contains.plan | 13 +- .../inverted-index-basic/word-contains_ps.plan | 32 +- .../inverted-index-basic/word-fuzzyeq-jaccard.plan | 19 +- .../inverted-index-basic/word-jaccard-check.plan | 19 +- .../results/inverted-index-basic/word-jaccard.plan | 19 +- ...m-edit-distance-check-let-panic-nopanic_01.plan | 18 +- ...m-edit-distance-check-let-panic-nopanic_02.plan | 18 +- .../ngram-edit-distance-check-let.plan | 19 +- .../ngram-edit-distance-check-substring.plan | 18 +- .../ngram-jaccard-check-let.plan | 19 +- .../ngram-jaccard-check-multi-let.plan | 19 +- .../olist-edit-distance-check-let-panic.plan | 13 +- .../olist-edit-distance-check-let-panic_ps.plan | 32 +- .../olist-edit-distance-check-let.plan | 20 +- .../olist-edit-distance-check-let_ps.plan | 54 +- .../olist-jaccard-check-let.plan | 19 +- .../ulist-jaccard-check-let.plan | 19 +- .../word-jaccard-check-let.plan | 19 +- .../word-jaccard-check-multi-let.plan | 19 +- .../ngram-edit-distance-inline.plan | 64 +- .../ngram-fuzzyeq-edit-distance.plan | 55 +- .../ngram-jaccard-inline.plan | 37 +- .../olist-edit-distance-inline.plan | 64 +- .../olist-jaccard-inline.plan | 25 +- .../ulist-jaccard-inline.plan | 25 +- .../word-jaccard-inline.plan | 37 +- .../results/inverted-index-join/issue741.plan | 50 +- ...-pidx-with-join-edit-distance-check-idx_01.plan | 86 +- ...dx-with-join-edit-distance-check-idx_01_ps.plan | 182 +++- ...-probe-pidx-with-join-jaccard-check-idx_01.plan | 55 +- ...obe-pidx-with-join-jaccard-check-idx_01_ps.plan | 120 ++- .../inverted-index-join/ngram-contains_ps.plan | 61 +- .../ngram-edit-distance-check_02.plan | 63 +- .../ngram-edit-distance-check_03.plan | 63 +- .../ngram-edit-distance-check_04.plan | 65 +- .../ngram-edit-distance_02.plan | 63 +- .../ngram-edit-distance_03.plan | 63 +- .../ngram-edit-distance_04.plan | 65 +- .../ngram-fuzzyeq-edit-distance_01.plan | 63 +- .../ngram-fuzzyeq-edit-distance_03.plan | 63 +- .../ngram-fuzzyeq-jaccard_02.plan | 33 +- .../ngram-fuzzyeq-jaccard_03.plan | 33 +- .../ngram-jaccard-check_02.plan | 33 +- .../ngram-jaccard-check_03.plan | 33 +- .../ngram-jaccard-check_04.plan | 36 +- .../inverted-index-join/ngram-jaccard_02.plan | 33 +- .../inverted-index-join/ngram-jaccard_03.plan | 33 +- .../inverted-index-join/ngram-jaccard_04.plan | 36 +- .../olist-edit-distance-check_02.plan | 63 +- .../olist-edit-distance-check_03.plan | 63 +- .../olist-edit-distance-check_04.plan | 65 +- .../olist-edit-distance_02.plan | 63 +- .../olist-edit-distance_03.plan | 63 +- .../olist-edit-distance_04.plan | 65 +- .../olist-fuzzyeq-edit-distance_02.plan | 63 +- .../olist-fuzzyeq-edit-distance_03.plan | 63 +- .../olist-fuzzyeq-jaccard_02.plan | 33 +- .../olist-fuzzyeq-jaccard_03.plan | 33 +- .../olist-jaccard-check_02.plan | 33 +- .../olist-jaccard-check_03.plan | 33 +- .../olist-jaccard-check_04.plan | 34 +- .../inverted-index-join/olist-jaccard_02.plan | 33 +- .../inverted-index-join/olist-jaccard_03.plan | 33 +- .../inverted-index-join/olist-jaccard_04.plan | 34 +- .../ulist-fuzzyeq-jaccard_02.plan | 33 +- .../ulist-fuzzyeq-jaccard_03.plan | 33 +- .../ulist-jaccard-check_02.plan | 33 +- .../ulist-jaccard-check_03.plan | 33 +- .../ulist-jaccard-check_04.plan | 34 +- .../inverted-index-join/ulist-jaccard_02.plan | 33 +- .../inverted-index-join/ulist-jaccard_03.plan | 33 +- .../inverted-index-join/ulist-jaccard_04.plan | 34 +- .../word-fuzzyeq-jaccard_02.plan | 33 +- .../word-fuzzyeq-jaccard_03.plan | 33 +- .../word-jaccard-check-after-btree-access.plan | 43 +- .../inverted-index-join/word-jaccard-check_02.plan | 33 +- .../inverted-index-join/word-jaccard-check_03.plan | 33 +- .../inverted-index-join/word-jaccard-check_04.plan | 36 +- .../inverted-index-join/word-jaccard_02.plan | 33 +- .../inverted-index-join/word-jaccard_03.plan | 33 +- .../inverted-index-join/word-jaccard_04.plan | 36 +- .../results/join-singletonbranch-2.plan | 29 +- .../results/join-singletonbranch-3.plan | 23 +- .../optimizerts/results/join-singletonbranch.plan | 29 +- .../optimizerts/results/join-super-key_01.plan | 23 +- .../optimizerts/results/join-super-key_02.plan | 23 +- .../optimizerts/results/joins/fnds_join_ds.plan | 25 +- .../results/joins/inner_right_corr.plan | 63 +- .../results/joins/nested_query_with_bcast.plan | 41 +- .../results/joins/nlj_partitioning_property_1.plan | 34 +- .../results/joins/nlj_partitioning_property_2.plan | 34 +- .../results/joins/query-ASTERIXDB-2986.plan | 41 +- .../results/leftouterjoin/loj-03-no-listify.plan | 149 ++- .../leftouterjoin/query-ASTERIXDB-2857.plan | 40 +- .../leftouterjoin/query-ASTERIXDB-2988.plan | 21 +- .../resources/optimizerts/results/loj-core.plan | 26 +- .../resources/optimizerts/results/loj-core_ps.plan | 58 +- .../resources/optimizerts/results/loj-sugar.plan | 26 +- .../optimizerts/results/loj-sugar_ps.plan | 58 +- .../optimizerts/results/loj-super-key_01.plan | 36 +- .../optimizerts/results/loj-super-key_02.plan | 37 +- .../meta/field_access_with_data_and_meta_1.plan | 14 +- .../meta/field_access_with_data_and_meta_2.plan | 12 +- .../meta/field_access_with_data_and_meta_3.plan | 12 +- .../meta/field_access_with_data_and_meta_4.plan | 14 +- .../meta/indexes_on_dataset_with_meta_01.plan | 11 +- .../meta/indexes_on_dataset_with_meta_02.plan | 11 +- .../meta/indexes_on_dataset_with_meta_03.plan | 11 +- .../meta/indexes_on_dataset_with_meta_04.plan | 11 +- .../meta/indexes_on_dataset_with_meta_05.plan | 27 +- .../meta/indexes_on_dataset_with_meta_06.plan | 22 +- .../meta/indexes_on_dataset_with_meta_07.plan | 23 +- .../meta/indexes_on_dataset_with_meta_08.plan | 20 +- .../meta/indexes_on_dataset_with_meta_09.plan | 11 +- .../meta/indexes_on_dataset_with_meta_10.plan | 29 +- .../meta/indexes_on_dataset_with_meta_11.plan | 22 +- .../optimizerts/results/meta/with_clause_meta.plan | 42 +- .../micro_external_sort/micro_external_sort.plan | 31 +- .../multipart-dataverse/index/index-01.plan | 21 +- .../multipart-dataverse/index/index-02.plan | 21 +- .../btree-index-join/ASTERIXDB-2199.plan | 18 +- ...join-probe-pidx-with-join-btree-sidx_01_ps.plan | 95 +- ...join-probe-pidx-with-join-btree-sidx_02_ps.plan | 95 +- .../ngram-contains-panic_ps.plan | 32 +- .../inverted-index-basic/ngram-contains_ps.plan | 54 +- .../olist-edit-distance-check-panic_ps.plan | 32 +- .../olist-edit-distance-check_ps.plan | 54 +- .../olist-edit-distance-panic_ps.plan | 32 +- .../olist-edit-distance_ps.plan | 54 +- .../olist-fuzzyeq-edit-distance_ps.plan | 54 +- .../inverted-index-basic/word-contains_ps.plan | 32 +- .../olist-edit-distance-check-let-panic_ps.plan | 32 +- .../olist-edit-distance-check-let_ps.plan | 54 +- ...dx-with-join-edit-distance-check-idx_01_ps.plan | 197 +++- ...obe-pidx-with-join-jaccard-check-idx_01_ps.plan | 127 ++- ...join-probe-pidx-with-join-rtree-sidx_01_ps.plan | 99 +- ...join-probe-pidx-with-join-rtree-sidx_02_ps.plan | 99 +- ...in-probe-pidx-with-join-btree-sidx_01_1_ps.plan | 95 +- ...in-probe-pidx-with-join-btree-sidx_01_2_ps.plan | 95 +- ...in-probe-pidx-with-join-btree-sidx_02_1_ps.plan | 95 +- ...in-probe-pidx-with-join-btree-sidx_02_2_ps.plan | 95 +- .../non-enforced-composite-key-equi-join/01.plan | 26 +- .../non-enforced-composite-key-equi-join/02.plan | 26 +- .../non-enforced-composite-key-equi-join/03.plan | 29 +- .../non-enforced-composite-key-equi-join/04.plan | 29 +- .../non-enforced-composite-key-equi-join/05.plan | 29 +- .../non-enforced-composite-key-equi-join/06.plan | 32 +- .../non-enforced-composite-key-equi-join/07.plan | 32 +- .../btree-index/non-enforced-composite-key/01.plan | 21 +- .../btree-index/non-enforced-composite-key/02.plan | 21 +- .../btree-index/non-enforced-composite-key/03.plan | 24 +- .../btree-index/non-enforced-composite-key/04.plan | 25 +- .../btree-index/non-enforced-composite-key/05.plan | 25 +- .../btree-index/non-enforced-composite-key/06.plan | 25 +- .../btree-index/non-enforced-composite-key/07.plan | 25 +- .../btree-index/non-enforced-composite-key/08.plan | 25 +- .../btree-index/non-enforced-composite-key/09.plan | 25 +- .../btree-index/non-enforced-composite-key/10.plan | 25 +- .../btree-index/non-enforced-composite-key/11.plan | 25 +- .../btree-index/non-enforced-composite-key/12.plan | 38 +- .../ngram-contains-panic_ps.plan | 32 +- .../inverted-index-basic/ngram-contains_ps.plan | 54 +- .../inverted-index-basic/word-contains_ps.plan | 32 +- ...dx-with-join-edit-distance-check-idx_01_ps.plan | 197 +++- .../inverted-index-join/ngram-contains_01_ps.plan | 53 +- .../inverted-index-join/ngram-contains_02_ps.plan | 53 +- .../inverted-index-join/ngram-contains_03_ps.plan | 61 +- .../inverted-index-join/ngram-contains_04_ps.plan | 61 +- ...join-probe-pidx-with-join-rtree-sidx_01_ps.plan | 99 +- ...join-probe-pidx-with-join-rtree-sidx_02_ps.plan | 99 +- .../resources/optimizerts/results/nested_loj2.plan | 54 +- ...in-probe-pidx-with-join-btree-sidx_01_1_ps.plan | 90 +- ...in-probe-pidx-with-join-btree-sidx_01_2_ps.plan | 90 +- ...in-probe-pidx-with-join-btree-sidx_02_1_ps.plan | 90 +- ...in-probe-pidx-with-join-btree-sidx_02_2_ps.plan | 90 +- .../ngram-contains-panic_ps.plan | 32 +- .../inverted-index-basic/ngram-contains_ps.plan | 54 +- .../inverted-index-basic/word-contains_ps.plan | 32 +- ...dx-with-join-edit-distance-check-idx_01_ps.plan | 182 +++- .../inverted-index-join/ngram-contains_01_ps.plan | 53 +- .../inverted-index-join/ngram-contains_02_ps.plan | 61 +- .../inverted-index-join/ngram-contains_03_ps.plan | 61 +- .../inverted-index-join/ngram-contains_04_ps.plan | 61 +- ...join-probe-pidx-with-join-rtree-sidx_01_ps.plan | 94 +- ...join-probe-pidx-with-join-rtree-sidx_02_ps.plan | 94 +- .../btree-composite-key-non-enforced-03.plan | 20 +- .../btree-composite-key-non-enforced-04.plan | 20 +- .../btree-equi-join-non-enforced-05.plan | 27 +- .../btree-equi-join-non-enforced-05_ps.plan | 59 +- .../btree-equi-join-non-enforced-06.plan | 27 +- .../btree-equi-join-non-enforced-06_ps.plan | 59 +- .../btree-equi-join-non-enforced-07.plan | 27 +- .../btree-equi-join-non-enforced-07_ps.plan | 59 +- .../btree-equi-join-non-enforced-08.plan | 30 +- .../btree-equi-join-non-enforced-08_ps.plan | 65 +- .../btree-equi-join-non-enforced-09.plan | 30 +- .../btree-equi-join-non-enforced-09_ps.plan | 65 +- .../btree-index-non-enforced-04.plan | 24 +- .../btree-index-non-enforced-04_ps.plan | 53 +- .../btree-index-non-enforced-05.plan | 24 +- .../btree-index-non-enforced-05_ps.plan | 53 +- .../btree-index-non-enforced-06.plan | 24 +- .../btree-index-non-enforced-06_ps.plan | 53 +- .../btree-index-non-enforced-07.plan | 24 +- .../btree-index-non-enforced-07_ps.plan | 53 +- .../btree-index-non-enforced-08.plan | 24 +- .../btree-index-non-enforced-08_ps.plan | 53 +- .../btree-index-non-enforced-09.plan | 24 +- .../btree-index-non-enforced-09_ps.plan | 53 +- .../btree-index-non-enforced-10.plan | 24 +- .../btree-index-non-enforced-105.plan | 37 +- .../btree-index-non-enforced-105_ps.plan | 79 +- .../btree-index-non-enforced-10_ps.plan | 53 +- .../btree-index-non-enforced-11.plan | 24 +- .../btree-index-non-enforced-11_ps.plan | 53 +- .../results/orderby-desc-using-gby_ps.plan | 51 +- .../results/orderby-nulls-first-last.plan | 17 +- .../orders-index-search-conjunctive-open_01.plan | 36 +- ...orders-index-search-conjunctive-open_01_ps.plan | 65 +- .../orders-index-search-conjunctive-open_02.plan | 36 +- ...orders-index-search-conjunctive-open_02_ps.plan | 65 +- .../orders-index-search-conjunctive_01.plan | 36 +- .../orders-index-search-conjunctive_01_ps.plan | 65 +- .../orders-index-search-conjunctive_02.plan | 36 +- .../orders-index-search-conjunctive_02_ps.plan | 65 +- .../results/p_sort_join/p_sort_join.plan | 85 +- .../results/p_sort_seq_merge/p_sort_seq_merge.plan | 36 +- .../parallel_sort_enabled_disabled.1.plan | 34 +- .../parallel_sort_enabled_disabled.2.plan | 14 +- .../delete-primary-key-index-with-secondary.plan | 22 +- ...-and-scan-primary-key-index-with-secondary.plan | 20 +- .../insert-primary-key-index-with-auto-gen-pk.plan | 9 + .../insert-primary-key-index.plan | 8 + .../load-primary-key-index-with-secondary.plan | 72 +- .../primary-key-index/load-primary-key-index.plan | 19 +- .../upsert-primary-key-index-with-secondary.plan | 15 + .../results/pull_select_above_eq_join.plan | 23 +- .../results/push-project-through-group.plan | 36 +- .../results/q01_pricing_summary_report_nt_ps.plan | 87 +- .../optimizerts/results/q08_group_by.plan | 84 +- .../optimizerts/results/q09_group_by.plan | 59 +- .../results/quantifiers/query-ASTERIXDB-2696.plan | 29 +- .../optimizerts/results/query-ASTERIXDB-159-3.plan | 59 +- .../optimizerts/results/query-ASTERIXDB-1671.plan | 18 +- .../optimizerts/results/query-ASTERIXDB-1806.plan | 31 +- .../results/query-ASTERIXDB-1806_ps.plan | 72 +- .../optimizerts/results/query-ASTERIXDB-2354.plan | 48 +- .../results/query-ASTERIXDB-2354_ps.plan | 102 +- .../optimizerts/results/query-ASTERIXDB-2408.plan | 40 +- .../results/query-ASTERIXDB-2408_ps.plan | 85 +- .../optimizerts/results/query-ASTERIXDB-2700.plan | 40 +- .../optimizerts/results/query-ASTERIXDB-3334.plan | 72 +- .../optimizerts/results/query-ASTERIXDB-3512.plan | 32 +- .../optimizerts/results/query-ASTERIXDB-810-2.plan | 48 +- .../results/query-ASTERIXDB-810-2_ps.plan | 106 +- .../optimizerts/results/query-ASTERIXDB-810-3.plan | 48 +- .../results/query-ASTERIXDB-810-3_ps.plan | 106 +- .../optimizerts/results/query-ASTERIXDB-810.plan | 48 +- .../results/query-ASTERIXDB-810_ps.plan | 106 +- .../optimizerts/results/query-issue562_ps.plan | 162 +++- .../optimizerts/results/query-issue601.plan | 29 +- .../optimizerts/results/query_issue3316.plan | 1017 ++++++++++++++++++-- .../optimizerts/results/query_issue849-2.plan | 32 +- .../optimizerts/results/query_issue849.plan | 34 +- .../optimizerts/results/remove_listify.plan | 40 +- .../results/rightouterjoin/roj-01-core.1.plan | 28 +- .../results/rightouterjoin/roj-01-core.2.plan | 43 +- .../rtree-sidx-idxonly-01.plan | 18 +- .../rtree-sidx-idxonly-02.plan | 18 +- .../rtree-sidx-idxonly-03.plan | 18 +- .../rtree-sidx-idxonly-04.plan | 18 +- .../rtree-sidx-idxonly-05.plan | 18 +- .../rtree-sidx-idxonly-06.plan | 18 +- .../rtree-sidx-idxonly-07.plan | 18 +- .../rtree-index-geometry/skip-rtree-sidx-01.plan | 9 +- .../rtree-index-geometry/skip-rtree-sidx-02.plan | 9 +- .../rtree-index-geometry/skip-rtree-sidx-03.plan | 9 +- .../rtree-index-geometry/skip-rtree-sidx-04.plan | 9 +- .../rtree-index-geometry/skip-rtree-sidx-05.plan | 9 +- .../rtree-index-geometry/skip-rtree-sidx-06.plan | 9 +- .../rtree-index-geometry/skip-rtree-sidx-07.plan | 9 +- ...join-probe-pidx-with-join-rtree-sidx_01_ps.plan | 146 ++- ...terjoin-probe-pidx-with-join-rtree-sidx_02.plan | 42 +- ...join-probe-pidx-with-join-rtree-sidx_02_ps.plan | 94 +- .../spatial-intersect-point_02.plan | 27 +- .../spatial-intersect-point_03.plan | 27 +- .../rtree-sidx-idxonly-01-disable-idxonly.plan | 23 +- .../results/rtree-index/rtree-sidx-idxonly-01.plan | 40 +- .../results/skip-index/skip-ngram-index_ps.plan | 32 +- .../skip-index/skip-secondary-btree-index-2.plan | 20 +- .../skip-index/skip-secondary-btree-index-3.plan | 17 +- .../skip-index/skip-secondary-btree-index-4.plan | 14 +- .../spatial_intersect_dynamic_partitioning.plan | 156 ++- .../spatial_intersect_static_partitioning.plan | 33 +- .../st_distance_static_partitioning.plan | 35 +- .../st_intersects_static_partitioning.plan | 35 +- .../optimizerts/results/split-materialization.plan | 31 +- .../results/split-materialization_ps.plan | 68 +- .../statement-params/statement-params-01.plan | 19 +- .../statement-params/statement-params-02.plan | 19 +- .../statement-params/statement-params-03.plan | 19 +- .../statement-params-index-01.plan | 23 +- .../statement-params-index-02.plan | 36 +- .../optimizerts/results/subquery/exists.plan | 86 +- .../optimizerts/results/subquery/exists_ps.plan | 182 +++- .../resources/optimizerts/results/subquery/in.plan | 38 +- .../optimizerts/results/subquery/in_as_or_1.plan | 18 +- .../results/subquery/in_as_or_1_ps.plan | 43 +- .../optimizerts/results/subquery/in_as_or_2.plan | 31 +- .../results/subquery/in_as_or_2_ps.plan | 73 +- .../optimizerts/results/subquery/in_as_or_3.plan | 18 +- .../results/subquery/in_as_or_3_ps.plan | 43 +- .../optimizerts/results/subquery/in_as_or_4.plan | 31 +- .../results/subquery/in_as_or_4_ps.plan | 73 +- .../optimizerts/results/subquery/in_as_or_5.plan | 18 +- .../results/subquery/in_as_or_5_ps.plan | 43 +- .../optimizerts/results/subquery/in_as_or_6.plan | 31 +- .../results/subquery/in_as_or_6_ps.plan | 73 +- .../results/subquery/in_correlated.plan | 36 +- .../results/subquery/in_correlated_ps.plan | 81 +- .../optimizerts/results/subquery/in_let_3.plan | 77 +- .../optimizerts/results/subquery/in_let_4.plan | 77 +- .../optimizerts/results/subquery/in_let_5.plan | 77 +- .../optimizerts/results/subquery/in_let_6.plan | 73 +- .../optimizerts/results/subquery/in_let_7.plan | 73 +- .../optimizerts/results/subquery/in_let_8.plan | 76 +- .../optimizerts/results/subquery/in_ps.plan | 85 +- .../optimizerts/results/subquery/not_exists.plan | 86 +- .../results/subquery/not_exists_ps.plan | 182 +++- .../results/subquery/query-ASTERIXDB-1572-2.plan | 12 +- .../results/subquery/query-ASTERIXDB-1572.plan | 38 +- .../results/subquery/query-ASTERIXDB-2815-2.plan | 78 +- .../results/subquery/query-ASTERIXDB-2815-3.plan | 79 +- .../results/subquery/query-ASTERIXDB-2815.plan | 79 +- .../results/subquery/query-ASTERIXDB-2845.plan | 150 ++- .../results/subquery/query-ASTERIXDB-3006.plan | 48 +- .../interval_after/interval_after.3.query.plan | 32 +- .../interval_before/interval_before.3.query.plan | 32 +- .../interval_covered_by.3.query.plan | 32 +- .../interval_covers/interval_covers.3.query.plan | 32 +- .../interval_ended_by.3.query.plan | 25 +- .../interval_ends/interval_ends.3.query.plan | 25 +- .../interval_meets/interval_meets.3.query.plan | 22 +- .../interval_met_by/interval_met_by.3.query.plan | 22 +- .../interval_overlapped_by.3.query.plan | 32 +- .../interval_overlapping.3.query.plan | 32 +- .../interval_overlaps.3.query.plan | 32 +- .../interval_started_by.3.query.plan | 25 +- .../interval_starts/interval_starts.3.query.plan | 25 +- .../results/tpcds/query-ASTERIXDB-1580.plan | 85 +- .../results/tpcds/query-ASTERIXDB-1581-2.plan | 133 ++- .../tpcds/query-ASTERIXDB-1581-correlated-2.plan | 381 +++++++- .../tpcds/query-ASTERIXDB-1581-correlated.plan | 380 +++++++- .../results/tpcds/query-ASTERIXDB-1581.plan | 207 +++- .../results/tpcds/query-ASTERIXDB-1591.plan | 180 +++- .../results/tpcds/query-ASTERIXDB-1596.plan | 32 +- .../results/tpcds/query-ASTERIXDB-1596_ps.plan | 69 +- .../optimizerts/results/tpch/q12_shipping.plan | 50 +- .../results/tpch/q12_shipping_broadcast.plan | 50 +- .../results/tpch/q12_shipping_broadcast_ps.plan | 110 ++- .../optimizerts/results/tpch/q12_shipping_ps.plan | 110 ++- .../optimizerts/results/union/union_opt_1_1.plan | 49 +- .../optimizerts/results/union/union_opt_1_2.plan | 51 +- .../optimizerts/results/union/union_opt_1_3.plan | 51 +- .../optimizerts/results/union/union_opt_1_4.plan | 53 +- .../results/window/pg_win/pg_win_01.plan | 8 + .../results/window/win_misc/win_misc_01.plan | 25 +- .../results/window/win_misc/win_misc_02.plan | 26 +- .../results/window/win_opt_01/win_opt_01_1.plan | 10 + .../results/window/win_opt_01/win_opt_01_10.plan | 17 +- .../results/window/win_opt_01/win_opt_01_11.plan | 17 +- .../results/window/win_opt_01/win_opt_01_12.plan | 26 +- .../results/window/win_opt_01/win_opt_01_2.plan | 17 +- .../results/window/win_opt_01/win_opt_01_3.plan | 17 +- .../results/window/win_opt_01/win_opt_01_4.plan | 17 +- .../results/window/win_opt_01/win_opt_01_5.plan | 10 + .../results/window/win_opt_01/win_opt_01_6.plan | 11 + .../results/window/win_opt_01/win_opt_01_7.plan | 19 +- .../results/window/win_opt_01/win_opt_01_8.plan | 8 +- .../results/window/win_opt_01/win_opt_01_9.plan | 16 +- .../results/window/win_opt_02/win_opt_02_1.plan | 27 +- .../optimizerts/results_cbo/ASTERIXDB-2402.plan | 199 +++- .../distinct_mixed/distinct_mixed.10.plan | 40 +- .../distinct_mixed/distinct_mixed.11.plan | 49 +- .../distinct_mixed/distinct_mixed.12.plan | 46 +- .../distinct_mixed/distinct_mixed.13.plan | 66 +- .../distinct_mixed/distinct_mixed.14.plan | 74 +- .../distinct_mixed/distinct_mixed.9.plan | 40 +- .../atomic-and-array-queries/query1.plan | 14 +- .../atomic-and-array-queries/query2.plan | 14 +- .../atomic-and-array-queries/query3.plan | 17 +- .../atomic-and-array-queries/query4.plan | 25 +- .../atomic-and-array-queries/query5.plan | 37 +- .../atomic-and-array-queries/query8.plan | 45 +- .../atomic-and-array-queries/query9.plan | 57 +- .../multiple-indexes/query1.plan | 24 +- .../multiple-indexes/query2.plan | 24 +- .../multiple-quantifiers/query7.plan | 25 +- .../use-case-1/query1.plan | 23 +- .../use-case-1/query2.plan | 26 +- .../use-case-1/query4.plan | 25 +- .../use-case-2/query1.plan | 23 +- .../use-case-2/query2.plan | 26 +- .../use-case-2/query3.plan | 25 +- .../use-case-3/query1.plan | 24 +- .../use-case-3/query2.plan | 24 +- .../use-case-3/query3.plan | 23 +- .../closed/use-case-1/query1.plan | 13 +- .../closed/use-case-1/query2.plan | 16 +- .../closed/use-case-2/query1.plan | 13 +- .../closed/use-case-2/query2.plan | 16 +- .../closed/use-case-3/query1.plan | 13 +- .../closed/use-case-3/query2.plan | 17 +- .../closed/use-case-3/query3.plan | 13 +- .../closed/use-case-4/query1.plan | 15 +- .../closed/use-case-4/query2.plan | 18 +- .../closed/with-3-level-record-path/query1.plan | 13 +- .../closed/with-3-level-record-path/query2.plan | 16 +- .../closed/with-composite-pk/query1.plan | 13 +- .../closed/with-composite-pk/query2.plan | 16 +- .../closed/with-composite-sk/query1.plan | 14 +- .../closed/with-composite-sk/query2.plan | 17 +- .../closed/with-filter-fields/query1.plan | 15 +- .../closed/with-filter-fields/query2.plan | 16 +- .../open/complex-structures/query1.plan | 13 +- .../open/complex-structures/query2.plan | 13 +- .../open/complex-structures/query3.plan | 15 +- .../open/complex-structures/query4.plan | 15 +- .../open/complex-structures/query5.plan | 13 +- .../open/complex-structures/query6.plan | 13 +- .../open/complex-structures/query7.plan | 15 +- .../open/complex-structures/query8.plan | 15 +- .../open/multiple-indexes/query1.plan | 13 +- .../open/multiple-indexes/query2.plan | 13 +- .../open/use-case-1/query1.plan | 13 +- .../open/use-case-1/query2.plan | 16 +- .../open/use-case-2/query1.plan | 13 +- .../open/use-case-2/query2.plan | 16 +- .../open/use-case-3/query1.plan | 13 +- .../open/use-case-3/query2.plan | 17 +- .../open/use-case-3/query3.plan | 13 +- .../open/use-case-4/query1.plan | 15 +- .../open/use-case-4/query2.plan | 18 +- .../open/with-3-level-record-path/query1.plan | 13 +- .../open/with-3-level-record-path/query2.plan | 16 +- .../open/with-composite-sk/query1.plan | 14 +- .../hints-indexnl-params-3.plan | 29 +- .../hints-indexnl-params-4.plan | 26 +- .../hints-indexnl-params-5.plan | 44 + .../hints-indexnl-params-6.plan | 26 +- .../hints-indexnl-params-7.plan | 44 + .../btree-index-join/secondary-equi-join_04.plan | 39 +- .../btree-index-composite-key-04.plan | 14 +- .../cast-default-null/cast-default-null-02.plan | 14 +- .../cast-default-null/cast-default-null-10.plan | 14 +- .../cast-default-null/cast-default-null-11.plan | 14 +- .../cast-default-null/cast-default-null-12.plan | 14 +- .../cast-default-null/cast-default-null-13.plan | 14 +- .../cast-default-null/cast-default-null-14.plan | 14 +- .../cast-default-null/cast-default-null-15.plan | 14 +- .../cast-default-null/cast-default-null-20.plan | 14 +- .../cast-default-null/cast-default-null-23.plan | 14 +- .../cast-default-null/cast-default-null-24.plan | 14 +- .../cast-default-null/cast-default-null-25.plan | 14 +- .../disjunctive-predicate-1.plan | 12 +- .../disjunctive-predicate-2.plan | 19 +- .../hints-skip-index/hints-skip-index-10.plan | 13 +- .../hints-skip-index/hints-skip-index-11.plan | 19 +- .../hints-skip-index/hints-skip-index-12.plan | 23 +- .../hints-skip-index/hints-skip-index-13.plan | 13 +- .../hints-skip-index/hints-skip-index-4.plan | 13 +- .../hints-skip-index/hints-skip-index-6.plan | 13 +- .../hints-skip-index/hints-skip-index-7.plan | 13 +- .../hints-skip-index/hints-skip-index-8.plan | 13 +- .../hints-skip-index/hints-skip-index-9.plan | 13 +- .../hints-use-index/hints-use-index-10.plan | 13 +- .../hints-use-index/hints-use-index-11.plan | 13 +- .../hints-use-index/hints-use-index-12.plan | 13 +- .../hints-use-index/hints-use-index-13.plan | 13 +- .../hints-use-index/hints-use-index-14.plan | 13 +- .../hints-use-index/hints-use-index-15.plan | 13 +- .../hints-use-index/hints-use-index-16.plan | 13 +- .../hints-use-index/hints-use-index-17.plan | 22 +- .../hints-use-index/hints-use-index-18.plan | 13 +- .../hints-use-index/hints-use-index-19.plan | 13 +- .../hints-use-index/hints-use-index-3.plan | 22 +- .../hints-use-index/hints-use-index-4.plan | 41 +- .../hints-use-index/hints-use-index-5.plan | 41 +- .../hints-use-index/hints-use-index-7.plan | 22 +- .../hints-use-index/hints-use-index-8.plan | 35 +- .../hints-use-index/hints-use-index-9.plan | 35 +- .../intersection-misc/intersection-misc-01.plan | 112 ++- .../intersection-misc/intersection-misc-02.plan | 112 ++- .../intersection-misc/intersection-misc-03.plan | 112 ++- .../btree-index/btree-composite-key-03.plan | 10 +- .../btree-index/btree-secondary-33.plan | 10 +- .../btree-index/btree-secondary-34.plan | 10 +- .../btree-index/btree-secondary-35.plan | 10 +- .../btree-index/btree-secondary-36.plan | 10 +- .../btree-index/btree-secondary-40.plan | 10 +- .../btree-index/btree-secondary-42.plan | 10 +- .../btree-index/btree-secondary-43.plan | 10 +- .../btree-index/btree-secondary-44.plan | 10 +- .../btree-index/btree-secondary-45.plan | 10 +- .../btree-index/btree-secondary-46.plan | 10 +- .../btree-index/btree-secondary-47.plan | 11 +- .../btree-index/btree-secondary-48.plan | 11 +- .../btree-index/btree-secondary-49.plan | 10 +- .../btree-index/btree-secondary-51.plan | 11 +- .../btree-index/btree-secondary-52.plan | 11 +- .../btree-index/btree-secondary-53.plan | 11 +- .../btree-index/btree-secondary-54.plan | 10 +- .../btree-index/btree-secondary-55.plan | 10 +- .../btree-index/btree-secondary-56.plan | 10 +- .../btree-index/btree-secondary-57.plan | 10 +- .../btree-index/btree-secondary-58.plan | 11 +- .../btree-index/btree-secondary-59.plan | 11 +- .../btree-index/btree-secondary-60.plan | 10 +- .../btree-index/btree-secondary-61.plan | 11 +- .../btree-index/btree-secondary-62.plan | 10 +- .../btree-index/btree-secondary-63.plan | 10 +- .../btree-index/btree-secondary-68.plan | 14 +- .../btree-index/btree-secondary-68_ps.plan | 34 +- .../btree-sidx-idxonly-01-disable-idxonly.plan | 14 +- .../btree-sidx-idxonly-01-disable-idxonly_ps.plan | 34 +- .../btree-index/btree-sidx-idxonly-01.plan | 14 +- .../btree-index/btree-sidx-idxonly-01_ps.plan | 34 +- .../btree-index/btree-sidx-idxonly-10.plan | 15 +- .../results_cbo/btree-ternary-inlj/query4.plan | 36 +- .../optimizerts/results_cbo/ch2/ch2_q10.plan | 64 +- .../optimizerts/results_cbo/ch2/ch2_q11.plan | 125 ++- .../optimizerts/results_cbo/ch2/ch2_q16.plan | 71 +- .../optimizerts/results_cbo/ch2/ch2_q18.plan | 54 +- .../optimizerts/results_cbo/ch2/ch2_q2.plan | 171 +++- .../optimizerts/results_cbo/ch2/ch2_q21.plan | 124 ++- .../optimizerts/results_cbo/ch2/ch2_q5.plan | 104 +- .../optimizerts/results_cbo/ch2/ch2_q7.plan | 150 ++- .../optimizerts/results_cbo/ch2/ch2_q8.plan | 136 ++- .../optimizerts/results_cbo/ch2/ch2_q9.plan | 87 +- .../results_cbo/column-pushdown/meta.001.plan | 125 ++- .../extract-common-operators.01.plan | 100 +- ...nverted-btree-search-return-optional-field.plan | 31 +- .../results_cbo/filter_on_meta_with_idx_2.plan | 26 +- .../results_cbo/group-by/listify-3.1.plan | 36 + .../hash-join-with-redundant-variable.1.plan | 125 ++- .../hash-join-with-redundant-variable.2.plan | 38 +- .../hash-join-with-redundant-variable.3.plan | 40 +- .../index-through-object.1.plan | 12 +- .../index-through-object.2.plan | 12 +- .../index-through-object.3.plan | 12 +- .../index-through-object.4.plan | 12 +- .../index-through-object.8.plan | 12 +- .../index-through-object.9.plan | 35 +- .../results_cbo/insert-and-scan-dataset.plan | 16 +- .../inverted-index-basic/ngram-contains.plan | 13 +- .../inverted-index-basic/ngram-contains_ps.plan | 32 +- .../ngram-edit-distance-check.plan | 17 +- .../inverted-index-basic/ngram-edit-distance.plan | 17 +- .../ngram-fuzzyeq-edit-distance.plan | 17 +- .../ngram-fuzzyeq-jaccard.plan | 17 +- .../inverted-index-basic/ngram-jaccard-check.plan | 17 +- .../inverted-index-basic/ngram-jaccard.plan | 17 +- .../olist-edit-distance-check.plan | 20 +- .../olist-edit-distance-check_ps.plan | 46 +- .../inverted-index-basic/olist-edit-distance.plan | 20 +- .../olist-edit-distance_ps.plan | 46 +- .../olist-fuzzyeq-edit-distance.plan | 20 +- .../olist-fuzzyeq-edit-distance_ps.plan | 46 +- .../olist-fuzzyeq-jaccard.plan | 17 +- .../inverted-index-basic/olist-jaccard-check.plan | 17 +- .../inverted-index-basic/olist-jaccard.plan | 17 +- .../ulist-fuzzyeq-jaccard.plan | 17 +- .../inverted-index-basic/ulist-jaccard-check.plan | 17 +- .../inverted-index-basic/ulist-jaccard.plan | 17 +- .../inverted-index-basic/word-fuzzyeq-jaccard.plan | 17 +- .../inverted-index-basic/word-jaccard-check.plan | 17 +- .../inverted-index-basic/word-jaccard.plan | 17 +- ...m-edit-distance-check-let-panic-nopanic_01.plan | 18 +- ...m-edit-distance-check-let-panic-nopanic_02.plan | 18 +- .../ngram-edit-distance-check-let.plan | 17 +- .../ngram-edit-distance-check-substring.plan | 18 +- .../ngram-jaccard-check-let.plan | 17 +- .../ngram-jaccard-check-multi-let.plan | 19 +- .../olist-edit-distance-check-let.plan | 20 +- .../olist-edit-distance-check-let_ps.plan | 46 +- .../olist-jaccard-check-let.plan | 17 +- .../ulist-jaccard-check-let.plan | 17 +- .../word-jaccard-check-let.plan | 17 +- .../word-jaccard-check-multi-let.plan | 19 +- .../results_cbo/joins/inner_right_corr.plan | 63 +- .../joins/nlj_partitioning_property_1.plan | 34 +- .../joins/nlj_partitioning_property_2.plan | 34 +- .../leftouterjoin/loj-03-no-listify.plan | 149 ++- .../leftouterjoin/query-ASTERIXDB-2857.plan | 40 +- .../meta/indexes_on_dataset_with_meta_05.plan | 23 +- .../meta/indexes_on_dataset_with_meta_08.plan | 11 +- .../multipart-dataverse/index/index-01.plan | 10 +- .../multipart-dataverse/index/index-02.plan | 10 +- .../btree-index-join/ASTERIXDB-2199.plan | 18 +- .../inverted-index-basic/ngram-contains_ps.plan | 32 +- .../olist-edit-distance-check_ps.plan | 46 +- .../olist-edit-distance_ps.plan | 46 +- .../olist-fuzzyeq-edit-distance_ps.plan | 46 +- .../olist-edit-distance-check-let_ps.plan | 46 +- .../non-enforced-composite-key-equi-join/05.plan | 29 +- .../btree-index/non-enforced-composite-key/01.plan | 10 +- .../btree-index/non-enforced-composite-key/02.plan | 10 +- .../btree-index/non-enforced-composite-key/03.plan | 15 +- .../btree-index/non-enforced-composite-key/04.plan | 16 +- .../btree-index/non-enforced-composite-key/05.plan | 16 +- .../btree-index/non-enforced-composite-key/06.plan | 16 +- .../btree-index/non-enforced-composite-key/07.plan | 16 +- .../btree-index/non-enforced-composite-key/08.plan | 16 +- .../btree-index/non-enforced-composite-key/09.plan | 16 +- .../btree-index/non-enforced-composite-key/10.plan | 16 +- .../btree-index/non-enforced-composite-key/11.plan | 16 +- .../btree-index/non-enforced-composite-key/12.plan | 16 +- .../inverted-index-basic/ngram-contains_ps.plan | 32 +- .../inverted-index-join/ngram-contains_01_ps.plan | 47 +- .../inverted-index-join/ngram-contains_02_ps.plan | 47 +- .../optimizerts/results_cbo/nested_loj2.plan | 54 +- .../inverted-index-basic/ngram-contains_ps.plan | 32 +- .../inverted-index-join/ngram-contains_01_ps.plan | 47 +- .../btree-composite-key-non-enforced-03.plan | 11 +- .../btree-composite-key-non-enforced-04.plan | 11 +- .../btree-equi-join-non-enforced-07.plan | 27 +- .../btree-equi-join-non-enforced-07_ps.plan | 59 +- .../btree-index-non-enforced-04.plan | 15 +- .../btree-index-non-enforced-04_ps.plan | 35 +- .../btree-index-non-enforced-05.plan | 15 +- .../btree-index-non-enforced-05_ps.plan | 35 +- .../btree-index-non-enforced-06.plan | 15 +- .../btree-index-non-enforced-06_ps.plan | 35 +- .../btree-index-non-enforced-07.plan | 15 +- .../btree-index-non-enforced-07_ps.plan | 35 +- .../btree-index-non-enforced-08.plan | 15 +- .../btree-index-non-enforced-08_ps.plan | 35 +- .../btree-index-non-enforced-09.plan | 15 +- .../btree-index-non-enforced-09_ps.plan | 35 +- .../btree-index-non-enforced-10.plan | 15 +- .../btree-index-non-enforced-105.plan | 15 +- .../btree-index-non-enforced-105_ps.plan | 35 +- .../btree-index-non-enforced-10_ps.plan | 35 +- .../btree-index-non-enforced-11.plan | 15 +- .../btree-index-non-enforced-11_ps.plan | 35 +- .../orders-index-search-conjunctive-open_01.plan | 27 +- ...orders-index-search-conjunctive-open_01_ps.plan | 47 +- .../orders-index-search-conjunctive-open_02.plan | 27 +- ...orders-index-search-conjunctive-open_02_ps.plan | 47 +- .../orders-index-search-conjunctive_01.plan | 27 +- .../orders-index-search-conjunctive_01_ps.plan | 47 +- .../orders-index-search-conjunctive_02.plan | 27 +- .../orders-index-search-conjunctive_02_ps.plan | 47 +- .../optimizerts/results_cbo/q08_group_by.plan | 84 +- .../optimizerts/results_cbo/q09_group_by.plan | 59 +- .../results_cbo/query-ASTERIXDB-2700.plan | 31 +- .../results_cbo/query-ASTERIXDB-3334.plan | 72 +- .../optimizerts/results_cbo/query_issue3316.plan | 1017 ++++++++++++++++++-- .../optimizerts/results_cbo/query_issue849-2.plan | 32 +- .../optimizerts/results_cbo/query_issue849.plan | 34 +- .../rtree-sidx-idxonly-01.plan | 9 +- .../rtree-sidx-idxonly-02.plan | 9 +- .../rtree-sidx-idxonly-03.plan | 9 +- .../rtree-sidx-idxonly-04.plan | 9 +- .../rtree-sidx-idxonly-05.plan | 9 +- .../rtree-sidx-idxonly-06.plan | 9 +- .../rtree-sidx-idxonly-07.plan | 9 +- .../rtree-sidx-idxonly-01-disable-idxonly.plan | 14 +- .../rtree-index/rtree-sidx-idxonly-01.plan | 14 +- .../skip-index/skip-secondary-btree-index-2.plan | 11 +- .../results_cbo/split-materialization.plan | 21 +- .../results_cbo/split-materialization_ps.plan | 48 +- .../statement-params/statement-params-01.plan | 10 +- .../statement-params/statement-params-02.plan | 10 +- .../statement-params/statement-params-03.plan | 10 +- .../statement-params-index-01.plan | 14 +- .../statement-params-index-02.plan | 14 +- .../results_cbo/subquery/in_as_or_2.plan | 31 +- .../results_cbo/subquery/in_as_or_2_ps.plan | 73 +- .../results_cbo/subquery/in_as_or_4.plan | 31 +- .../results_cbo/subquery/in_as_or_4_ps.plan | 73 +- .../results_cbo/subquery/in_as_or_6.plan | 31 +- .../results_cbo/subquery/in_as_or_6_ps.plan | 73 +- .../results_cbo/tpcds/query-ASTERIXDB-1580.plan | 85 +- .../results_cbo/tpcds/query-ASTERIXDB-1581.plan | 207 +++- .../results_cbo/tpcds/query-ASTERIXDB-1591.plan | 180 +++- .../results_cbo/tpcds/query-ASTERIXDB-1596.plan | 32 +- .../results_cbo/tpcds/query-ASTERIXDB-1596_ps.plan | 69 +- .../results_cbo/tpch/q12_broadcast.plan | 43 - .../results_cbo/tpch/q12_broadcast_ps.plan | 95 -- .../optimizerts/results_cbo/tpch/q12_shipping.plan | 50 +- .../results_cbo/tpch/q12_shipping_broadcast.plan | 50 +- .../tpch/q12_shipping_broadcast_ps.plan | 110 ++- .../results_cbo/tpch/q12_shipping_ps.plan | 110 ++- .../deltalake-partitioned-file-read.00.ddl.sqlpp | 35 + .../deltalake-partitioned-file-read.01.query.sqlpp | 22 + .../query-ASTERIXDB-3562.1.ddl.sqlpp | 29 + .../query-ASTERIXDB-3562.2.update.sqlpp | 22 + .../query-ASTERIXDB-3562.3.query.sqlpp | 22 + .../query-ASTERIXDB-3562.4.query.sqlpp | 23 + .../query-ASTERIXDB-3562.5.ddl.sqlpp | 20 + .../read-data.2.adm | 5 + .../query-ASTERIXDB-3562.3.adm | 1 + .../query-ASTERIXDB-3562.4.plan | 34 + .../join-queries/join-queries.5.plan | 18 +- .../join-queries/join-queries.6.plan | 26 +- .../join-queries/join-queries.7.plan | 26 +- .../join-queries/join-queries.8.plan | 24 +- .../field-access-pushdown.008.plan | 20 +- .../hash-join-with-redundant-variable.04.plan | 96 +- .../hash-join-with-redundant-variable.10.plan | 98 +- .../hash-join-with-redundant-variable.12.plan | 18 +- .../hash-join-with-redundant-variable.14.plan | 36 +- .../hash-join-with-redundant-variable.16.plan | 28 +- .../index-only-leftouterjoin.007.plan | 14 +- .../index-only-leftouterjoin.008.plan | 14 +- .../index-only-leftouterjoin.009.plan | 14 +- .../index-only-leftouterjoin.010.plan | 14 +- .../push-limit-to-primary-scan-select.5.plan | 18 +- .../query-ASTERIXDB-3562.4.plan | 34 + .../tpch/query-plans/query-plans.04.plan | 40 +- .../tpch/query-plans/query-plans.07.plan | 50 +- .../tpch/query-plans/query-plans.08.plan | 36 +- .../tpch/query-plans/query-plans.09.plan | 26 +- .../tpch/query-plans/query-plans.10.plan | 24 +- .../tpch/query-plans/query-plans.11.plan | 40 +- .../query-ASTERIXDB-3562.4.plan | 34 + .../src/test/resources/runtimets/sqlpp_queries.xml | 5 + .../runtimets/testsuite_external_dataset_s3.xml | 6 + .../filter/DeltaTableFilterEvaluatorFactory.java | 53 + .../NoOpDeltaTableFilterEvaluatorFactory.java | 46 + .../reader/aws/delta/DeltaReaderFactory.java | 23 +- .../apache/asterix/metadata/utils/DatasetUtil.java | 5 + .../apache/asterix/metadata/utils/IndexUtil.java | 30 +- .../utils/filter/AbstractFilterBuilder.java | 2 +- .../utils/filter/DeltaTableFilterBuilder.java | 180 ++++ .../algebra/operators/logical/SubplanOperator.java | 2 +- hyracks-fullstack/pom.xml | 2 +- 1137 files changed, 40718 insertions(+), 5701 deletions(-) diff --cc asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java index 87f8f9156c,7df9b477b2..8bcf7a2f69 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java @@@ -756,95 -745,8 +756,100 @@@ public class DatasetUtil && dataset.getDatasetFormatInfo().getFormat() == DatasetConfig.DatasetFormat.COLUMN; } + public static void truncate(MetadataProvider metadataProvider, Dataset ds) throws Exception { + if (ds.getDatasetType() == DatasetType.INTERNAL) { + IHyracksClientConnection hcc; + Map<String, List<DatasetPartitions>> nc2Resources = getNodeResources(metadataProvider, ds); + AlgebricksAbsolutePartitionConstraint nodeSet = + new AlgebricksAbsolutePartitionConstraint(nc2Resources.keySet().toArray(new String[0])); + JobSpecification job = new JobSpecification(); + IOperatorDescriptor truncateOp = new TruncateOperatorDescriptor(job, nc2Resources); + AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(job, truncateOp, nodeSet); + hcc = metadataProvider.getApplicationContext().getHcc(); + JobUtils.runJobIfActive(hcc, job, true); + } else { + throw new IllegalArgumentException("Cannot truncate a non-internal dataset."); + } + } + + public static DatasetPartitions getPartitionsAndDataflowHelperFactory(Dataset dataset, + List<DatasetPartitions> ncResources, IIndexDataflowHelperFactory primary, + List<IIndexDataflowHelperFactory> secondaries) { + DatasetPartitions partitionsAndDataflowHelperFactory; + if (ncResources.isEmpty()) { + partitionsAndDataflowHelperFactory = + new DatasetPartitions(dataset, new ArrayList<>(), primary, secondaries); + ncResources.add(partitionsAndDataflowHelperFactory); + } else { + DatasetPartitions last = ncResources.get(ncResources.size() - 1); + if (last.getPrimaryIndexDataflowHelperFactory() == primary) { + partitionsAndDataflowHelperFactory = last; + } else { + partitionsAndDataflowHelperFactory = + new DatasetPartitions(dataset, new ArrayList<>(), primary, secondaries); + ncResources.add(partitionsAndDataflowHelperFactory); + } + } + return partitionsAndDataflowHelperFactory; + } + + public static Map<String, List<DatasetPartitions>> getNodeResources(MetadataProvider metadataProvider, + Dataset dataset) throws AlgebricksException { + Map<String, List<DatasetPartitions>> nc2Resources = new HashMap<>(); + IStorageManager storageManager = metadataProvider.getStorageComponentProvider().getStorageManager(); + + // get secondary indexes + List<Index> secondaryIndexes = + metadataProvider + .getDatasetIndexes(dataset.getDatabaseName(), dataset.getDataverseName(), + dataset.getDatasetName()) + .stream().filter(Index::isSecondaryIndex).collect(Collectors.toList()); + PartitioningProperties partitioningProperties = metadataProvider.getPartitioningProperties(dataset); + IIndexDataflowHelperFactory primary = + new IndexDataflowHelperFactory(storageManager, partitioningProperties.getSplitsProvider()); + List<IIndexDataflowHelperFactory> secondaries = + secondaryIndexes.isEmpty() ? Collections.emptyList() : new ArrayList<>(); + for (Index index : secondaryIndexes) { + PartitioningProperties idxPartitioningProperties = + metadataProvider.getPartitioningProperties(dataset, index.getIndexName()); + secondaries + .add(new IndexDataflowHelperFactory(storageManager, idxPartitioningProperties.getSplitsProvider())); + } + AlgebricksAbsolutePartitionConstraint computeLocations = + (AlgebricksAbsolutePartitionConstraint) partitioningProperties.getConstraints(); + int[][] computeStorageMap = partitioningProperties.getComputeStorageMap(); + for (int j = 0; j < computeLocations.getLocations().length; j++) { + String loc = computeLocations.getLocations()[j]; + DatasetPartitions partitionsAndDataflowHelperFactories = getPartitionsAndDataflowHelperFactory(dataset, + nc2Resources.computeIfAbsent(loc, key -> new ArrayList<>()), primary, secondaries); + List<Integer> dsPartitions = partitionsAndDataflowHelperFactories.getPartitions(); + int[] computeStoragePartitions = computeStorageMap[j]; + for (int storagePartition : computeStoragePartitions) { + dsPartitions.add(storagePartition); + } + } + return nc2Resources; + } + + public static DatasetResource getDatasetResource(DatasetLifecycleManager dslMgr, Integer partition, + IndexDataflowHelper indexHelper) throws HyracksDataException { + LocalResource lr = indexHelper.getResource(); + DatasetLocalResource dslr = (DatasetLocalResource) lr.getResource(); + int datasetId = dslr.getDatasetId(); + DatasetResource dsr = dslMgr.getDatasetLifecycle(datasetId); + // Ensure that no active operations exists + int numActiveOperations = + dslMgr.getOperationTracker(datasetId, partition, lr.getPath()).getNumActiveOperations(); + if (numActiveOperations > 0) { + throw new IllegalStateException("Can't truncate the collection " + dsr.getDatasetInfo().getDatasetID() + + " because the number of active operations = " + numActiveOperations + " in the partition " + + partition); + } + return dsr; + } ++ + public static boolean isDeltaTable(Dataset dataset) { + return dataset.getDatasetType() == DatasetType.EXTERNAL && ExternalDataUtils + .isDeltaTable(((ExternalDatasetDetails) dataset.getDatasetDetails()).getProperties()); + } }
