Steven Jacobs has submitted this change and it was merged. Change subject: [ASTERIXDB-2394][COMP] Align VarCounter in query rewritting ......................................................................
[ASTERIXDB-2394][COMP] Align VarCounter in query rewritting - user model changes: no - storage format changes: no - interface changes: no Details: Currently, before we do certain language rewritings, we take a snapshot of the var counter in the context and pass it to the rewriter. This works fine in most of the cases, but it can fail when the rewriter introduces new variables. This will cause different variables map to the same variable id. Although this error may be fixed by another ScopingVisitor, the compiler could fail if there is no more visitor down in the rewriting workflow. Change-Id: I8ea1ee7de140d6556af03f07a5ec7bc278b011ba Reviewed-on: https://asterix-gerrit.ics.uci.edu/2673 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Reviewed-by: Dmitry Lychagin <[email protected]> --- M asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/secondary-equi-join_06.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/denorm-cust-order.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/filter/inverted-btree-search-return-optional-field.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_partitioning_property_01.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue601.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/rtree-index/rtree-sidx-idxonly-01-disable-idxonly.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in_correlated.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.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 A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.1.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.2.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.3.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.4.ddl.sqlpp M asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm M asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm A asterixdb/asterix-app/src/test/resources/runtimets/results/function/issue-2394/issue-2394.1.adm M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml M asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java M asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java 31 files changed, 344 insertions(+), 196 deletions(-) Approvals: Anon. E. Moose #1000171: Jenkins: Verified; No violations found; ; Verified Dmitry Lychagin: Looks good to me, approved diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan index c83a85c..59ddab8 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/aggregate/constant-gby-agg.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- SORT_GROUP_BY[$$38] |PARTITIONED| + -- SORT_GROUP_BY[$$39] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$38] |PARTITIONED| - -- SORT_GROUP_BY[$$34] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$39] |PARTITIONED| + -- SORT_GROUP_BY[$$35] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/secondary-equi-join_06.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/secondary-equi-join_06.plan index 1917413..5163d81 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/secondary-equi-join_06.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/secondary-equi-join_06.plan @@ -8,7 +8,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- BTREE_SEARCH |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$66(ASC)] |PARTITIONED| + -- STABLE_SORT [$$68(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -17,13 +17,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- SORT_GROUP_BY[$$64] |PARTITIONED| + -- SORT_GROUP_BY[$$66] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$64] |PARTITIONED| - -- SORT_GROUP_BY[$$57] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$66] |PARTITIONED| + -- SORT_GROUP_BY[$$59] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/denorm-cust-order.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/denorm-cust-order.plan index 31b1af9..d3cf6b8 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/denorm-cust-order.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/denorm-cust-order.plan @@ -3,22 +3,22 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$77] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$80] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$77(ASC)] |PARTITIONED| + -- STABLE_SORT [$$80(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$77][$$79] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$80][$$82] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$79] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$82] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter/inverted-btree-search-return-optional-field.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter/inverted-btree-search-return-optional-field.plan index 629a05a..5ce7537 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter/inverted-btree-search-return-optional-field.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/filter/inverted-btree-search-return-optional-field.plan @@ -3,27 +3,27 @@ -- STREAM_LIMIT |UNPARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| - -- SORT_MERGE_EXCHANGE [$$37(DESC) ] |PARTITIONED| + -- SORT_MERGE_EXCHANGE [$$38(DESC) ] |PARTITIONED| -- STREAM_LIMIT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [topK: 2147483647] [$$37(DESC)] |PARTITIONED| + -- STABLE_SORT [topK: 2147483647] [$$38(DESC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$38] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$39] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$38(ASC)] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$38] |PARTITIONED| + -- STABLE_SORT [$$39(ASC)] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$39] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$39][$#1] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$39] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$40][$#1] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$40] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_SELECT |PARTITIONED| @@ -31,7 +31,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- BTREE_SEARCH |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$52(ASC)] |PARTITIONED| + -- STABLE_SORT [$$53(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- SINGLE_PARTITION_INVERTED_INDEX_SEARCH |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_partitioning_property_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_partitioning_property_01.plan index 0d7d538..254bf24 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_partitioning_property_01.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/gby_partitioning_property_01.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$59] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$60] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- SORT_GROUP_BY[$$49] |PARTITIONED| + -- SORT_GROUP_BY[$$50] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| @@ -17,8 +17,8 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$49][$$52] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$49] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$50][$$53] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$50] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| @@ -26,7 +26,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$52] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$53] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan index 0f8b28f..124d677 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-1806.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- SORT_MERGE_EXCHANGE [$$l_returnflag(ASC), $$l_linestatus(ASC) ] |PARTITIONED| - -- SORT_GROUP_BY[$$140, $$141] |PARTITIONED| + -- SORT_GROUP_BY[$$148, $$149] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$140, $$141] |PARTITIONED| - -- SORT_GROUP_BY[$$108, $$109] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$148, $$149] |PARTITIONED| + -- SORT_GROUP_BY[$$116, $$117] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue601.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue601.plan index e65a903..8e3ca40 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue601.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query-issue601.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- SORT_GROUP_BY[$$40] |PARTITIONED| + -- SORT_GROUP_BY[$$41] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$40] |PARTITIONED| - -- SORT_GROUP_BY[$$37] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$41] |PARTITIONED| + -- SORT_GROUP_BY[$$38] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/rtree-index/rtree-sidx-idxonly-01-disable-idxonly.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/rtree-index/rtree-sidx-idxonly-01-disable-idxonly.plan index 0bfec2b..1b959cb 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/rtree-index/rtree-sidx-idxonly-01-disable-idxonly.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/rtree-index/rtree-sidx-idxonly-01-disable-idxonly.plan @@ -12,7 +12,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- BTREE_SEARCH |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$53(ASC)] |PARTITIONED| + -- STABLE_SORT [$$55(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization.plan index 307af54..e707957 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/split-materialization.plan @@ -2,8 +2,8 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| - -- SORT_MERGE_EXCHANGE [$$74(ASC), $$75(ASC) ] |PARTITIONED| - -- STABLE_SORT [$$74(ASC), $$75(ASC)] |PARTITIONED| + -- SORT_MERGE_EXCHANGE [$$79(ASC), $$80(ASC) ] |PARTITIONED| + -- STABLE_SORT [$$79(ASC), $$80(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- NESTED_LOOP |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan index 1ae1e60..9672972 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/exists.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- SORT_MERGE_EXCHANGE [$$cntrycode(ASC) ] |PARTITIONED| - -- SORT_GROUP_BY[$$146] |PARTITIONED| + -- SORT_GROUP_BY[$$162] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$146] |PARTITIONED| - -- SORT_GROUP_BY[$$123] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$162] |PARTITIONED| + -- SORT_GROUP_BY[$$139] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| @@ -21,25 +21,25 @@ -- STREAM_SELECT |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- SORT_GROUP_BY[$$143] |PARTITIONED| + -- SORT_GROUP_BY[$$159] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$143] |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$137] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$159] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$153] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$137(ASC)] |PARTITIONED| + -- STABLE_SORT [$$153(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$132][$$129] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$132] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$148][$$145] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$148] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -66,7 +66,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$129] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$145] |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- DATASOURCE_SCAN |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in.plan index 7f916f1..9dcdd24 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in.plan @@ -2,13 +2,13 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| - -- SORT_MERGE_EXCHANGE [$$40(ASC) ] |PARTITIONED| - -- STABLE_SORT [$$40(ASC)] |PARTITIONED| + -- SORT_MERGE_EXCHANGE [$$41(ASC) ] |PARTITIONED| + -- STABLE_SORT [$$41(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$33] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$34] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| @@ -17,7 +17,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$33][$$21] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$34][$$22] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| @@ -25,7 +25,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$21] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$22] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in_correlated.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in_correlated.plan index 7f0bb3b..2d9d64b 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in_correlated.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/in_correlated.plan @@ -2,13 +2,13 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| - -- SORT_MERGE_EXCHANGE [$$45(ASC) ] |PARTITIONED| - -- STABLE_SORT [$$45(ASC)] |PARTITIONED| + -- SORT_MERGE_EXCHANGE [$$46(ASC) ] |PARTITIONED| + -- STABLE_SORT [$$46(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$37] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$38] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| @@ -22,7 +22,7 @@ -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$37][$$36] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$38][$$37] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ASSIGN |PARTITIONED| @@ -30,7 +30,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$36] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$37] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan index 7ef3e37..170a15b 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/not_exists.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- SORT_MERGE_EXCHANGE [$$cntrycode(ASC) ] |PARTITIONED| - -- SORT_GROUP_BY[$$147] |PARTITIONED| + -- SORT_GROUP_BY[$$163] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$147] |PARTITIONED| - -- SORT_GROUP_BY[$$124] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$163] |PARTITIONED| + -- SORT_GROUP_BY[$$140] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| @@ -21,25 +21,25 @@ -- STREAM_SELECT |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- SORT_GROUP_BY[$$144] |PARTITIONED| + -- SORT_GROUP_BY[$$160] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$144] |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$138] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$160] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$154] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$138(ASC)] |PARTITIONED| + -- STABLE_SORT [$$154(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$133][$$130] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$133] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$149][$$146] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$149] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -66,7 +66,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$130] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$146] |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- DATASOURCE_SCAN |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan index ec9715e..9b5bedd 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-1572.plan @@ -5,20 +5,20 @@ -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$58] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$62] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$58(ASC)] |PARTITIONED| + -- STABLE_SORT [$$62(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$58][$#4] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$62][$#4] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$56] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$60] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| @@ -27,22 +27,22 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$56][$#3] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$60][$#3] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$54] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$58] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$54(ASC)] |PARTITIONED| + -- STABLE_SORT [$$58(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$54][$#2] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$58][$#2] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$47] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$51] |PARTITIONED| { -- AGGREGATE |LOCAL| -- STREAM_SELECT |LOCAL| @@ -51,7 +51,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$47][$#1] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$51][$#1] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan index a647c7c..0fabd6d 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1580.plan @@ -4,21 +4,21 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- SORT_MERGE_EXCHANGE [$$110(ASC) ] |PARTITIONED| + -- SORT_MERGE_EXCHANGE [$$113(ASC) ] |PARTITIONED| -- STREAM_LIMIT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [topK: 100] [$$110(ASC)] |PARTITIONED| + -- STABLE_SORT [topK: 100] [$$113(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- SORT_GROUP_BY[$$120] |PARTITIONED| + -- SORT_GROUP_BY[$$123] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$120] |PARTITIONED| - -- SORT_GROUP_BY[$$98] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$123] |PARTITIONED| + -- SORT_GROUP_BY[$$101] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| @@ -26,33 +26,33 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$102][$$105] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$102] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$105][$$108] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$105] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$111][$$104] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$111] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$114][$$107] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$114] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$101][$$116] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$101] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$104][$$119] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$104] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$100][$$114] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$103][$$117] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$114] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$117] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$116] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$119] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan index 906e52f..c27116d 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan @@ -8,7 +8,7 @@ -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$144] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$149] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -20,9 +20,9 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$144][$$145] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$149][$$150] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$132] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$137] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -32,13 +32,13 @@ -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$132(ASC)] |PARTITIONED| + -- STABLE_SORT [$$137(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$132][$$133] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$137][$$138] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$112] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$117] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -48,7 +48,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$112][$$122] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$117][$$127] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -66,7 +66,7 @@ -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- REPLICATE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$169] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$174] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| @@ -78,18 +78,18 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$133] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$138] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$126][$$125] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$126] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$131][$$130] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$131] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$134] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$139] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -99,7 +99,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$134][$$136] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$139][$$141] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| @@ -115,7 +115,7 @@ -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- REPLICATE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$169] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$174] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| @@ -127,7 +127,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$125] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$130] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| @@ -140,13 +140,13 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$145] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$150] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$128][$$127] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$128] |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$146] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$133][$$132] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$133] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$151] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -155,18 +155,18 @@ -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$146(ASC)] |PARTITIONED| + -- STABLE_SORT [$$151(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$146][$$149] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$151][$$154] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$150] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$155] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -176,7 +176,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$150][$$151] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$155][$$156] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -194,7 +194,7 @@ -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- REPLICATE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$169] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$174] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| @@ -206,18 +206,18 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$149] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$154] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$163][$$162] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$163] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$168][$$167] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$168] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$168] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$173] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -227,7 +227,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$168][$$169] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$173][$$174] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- REPLICATE |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -237,7 +237,7 @@ -- EMPTY_TUPLE_SOURCE |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- REPLICATE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$169] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$174] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| @@ -249,7 +249,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$162] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$167] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| @@ -260,7 +260,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$127] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$132] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan index c335414..67965bf 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581.plan @@ -16,7 +16,7 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$141] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$146] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -28,9 +28,9 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$141][$$142] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$146][$$147] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$77] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$82] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -40,12 +40,12 @@ -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$77(ASC)] |PARTITIONED| + -- STABLE_SORT [$$82(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$77][$$134] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$77] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$82][$$139] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$82] |PARTITIONED| -- STREAM_PROJECT |UNPARTITIONED| -- ASSIGN |UNPARTITIONED| -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED| @@ -63,7 +63,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$134] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$139] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| @@ -94,7 +94,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$142] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$147] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| @@ -108,7 +108,7 @@ -- STREAM_SELECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- PRE_CLUSTERED_GROUP_BY[$$143] |PARTITIONED| + -- PRE_CLUSTERED_GROUP_BY[$$148] |PARTITIONED| { -- AGGREGATE |LOCAL| -- AGGREGATE |LOCAL| @@ -117,12 +117,12 @@ -- NESTED_TUPLE_SOURCE |LOCAL| } -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$143(ASC)] |PARTITIONED| + -- STABLE_SORT [$$148(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$143][$$144] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$143] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$148][$$149] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$148] |PARTITIONED| -- STREAM_PROJECT |UNPARTITIONED| -- ASSIGN |UNPARTITIONED| -- ONE_TO_ONE_EXCHANGE |UNPARTITIONED| @@ -140,7 +140,7 @@ -- DATASOURCE_SCAN |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- EMPTY_TUPLE_SOURCE |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$144] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$149] |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan index c2790a4..2033230 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- SORT_MERGE_EXCHANGE [$$l_shipmode(ASC) ] |PARTITIONED| - -- SORT_GROUP_BY[$$119] |PARTITIONED| + -- SORT_GROUP_BY[$$121] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$119] |PARTITIONED| - -- SORT_GROUP_BY[$$101] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED| + -- SORT_GROUP_BY[$$103] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| @@ -17,12 +17,12 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$101][$$108] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$103][$$110] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$110][$$105] |PARTITIONED| - -- HASH_PARTITION_EXCHANGE [$$110] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$112][$$107] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$112] |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| -- ASSIGN |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan index 789992e..61d53a7 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpch/q12_shipping_broadcast.plan @@ -3,13 +3,13 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- SORT_MERGE_EXCHANGE [$$l_shipmode(ASC) ] |PARTITIONED| - -- SORT_GROUP_BY[$$119] |PARTITIONED| + -- SORT_GROUP_BY[$$121] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| } - -- HASH_PARTITION_EXCHANGE [$$119] |PARTITIONED| - -- SORT_GROUP_BY[$$101] |PARTITIONED| + -- HASH_PARTITION_EXCHANGE [$$121] |PARTITIONED| + -- SORT_GROUP_BY[$$103] |PARTITIONED| { -- AGGREGATE |LOCAL| -- NESTED_TUPLE_SOURCE |LOCAL| @@ -17,11 +17,11 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$101][$$108] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$103][$$110] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- HYBRID_HASH_JOIN [$$109][$$105] |PARTITIONED| + -- HYBRID_HASH_JOIN [$$111][$$107] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- STREAM_SELECT |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.1.ddl.sqlpp new file mode 100644 index 0000000..a1173de --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.1.ddl.sqlpp @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +drop dataverse Coffee if exists; +create dataverse Coffee; +use Coffee; + + +create type CoffeeType as { + id: string, + location: point +}; + +create type FollowersType as { + user_id: string, + twitter_id: string, + followers: [string] +}; + +create dataset Coffee(CoffeeType) + primary key id; + +create dataset Followers(FollowersType) + primary key user_id; + +create type Tweet as open { + id: int64, + timestamp_ms: string +}; + +create dataset Tweets (Tweet) +primary key id; + +create function CoffeeWithFriends(user_id){ +(select * from Tweets t +let temp = (select * from Tweets f where f.user.id_str in (select value fw.followers from Followers fw where fw.twitter_id=user_id)[0] +and +spatial_intersect(create_point(f.place.bounding_box.coordinates[0][0][0],f.place.bounding_box.coordinates[0][0][1]), +create_point(t.place.bounding_box.coordinates[0][0][0],t.place.bounding_box.coordinates[0][0][1]))) +where t.user.id_str = user_id) +}; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.2.update.sqlpp new file mode 100644 index 0000000..7bb9131 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.2.update.sqlpp @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +use Coffee; +upsert into Coffee +([ +{"id":"001", "location":point("-117.523867, 33.85216")}, +{"id":"002", "location":point("-122.37382985, 47.67917392")}, +{"id":"003", "location":point("-122.00795969, 37.40427696")}, +{"id":"004", "location":point("-122.00794969, 37.40427596")} +]); + +upsert into Followers +([ +{"user_id":"userId@Coffee", "twitter_id": "988455822727393280", "followers":["988455822727393281","988455822727393282", "0004", "0005", "0006", "0007", "0008"]} +]); + +upsert into Tweets([ +{ "id": 999403843673718784, "user": +{ "id": 988455822727393280, "id_str": "988455822727393280", "screen_name": "TweetUser" }, +"timestamp_ms": "1527111419014", + "place": { "country_code": "US", "country": "United States", "full_name": "Riverside, CA", + "bounding_box": + { "coordinates": [ [ [ -117.523867, 33.85216 ], [ -117.523867, 34.019484 ], [ -117.271365, 34.019484 ], [ -117.271365, 33.85216 ] ] ] + } } }, + + { "id": 999403845, "user": +{ "id": 988455822727393281, "id_str": "988455822727393281", "screen_name": "TweetUser" }, +"timestamp_ms": "1527111419014", + "place": { "country_code": "US", "country": "United States", "full_name": "Riverside, CA", + "bounding_box": + { "coordinates": [ [ [ -117.523867, 33.85216 ], [ -117.523867, 34.019484 ], [ -117.271365, 34.019484 ], [ -117.271365, 33.85216 ] ] ] + } } }, + + { "id": 999403846, "user": +{ "id": 988455822727393282, "id_str": "988455822727393282", "screen_name": "TweetUser" }, +"timestamp_ms": "1527111419014", + "place": { "country_code": "US", "country": "United States", "full_name": "Riverside, CA", + "bounding_box": + { "coordinates": [ [ [ -117.523867, 33.85216 ], [ -117.523867, 34.019484 ], [ -117.271365, 34.019484 ], [ -117.271365, 33.85216 ] ] ] + } } } +]); \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.3.query.sqlpp new file mode 100644 index 0000000..140f6c5 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.3.query.sqlpp @@ -0,0 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +use Coffee; +CoffeeWithFriends("988455822727393280"); \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.4.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.4.ddl.sqlpp new file mode 100644 index 0000000..639d98d --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/function/issue-2394/issue-2394.4.ddl.sqlpp @@ -0,0 +1,19 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +drop dataverse Coffee; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm index 98cedcc..cbbd46b 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access/explain_field_access.1.adm @@ -1,44 +1,44 @@ -distribute result [$$36] +distribute result [$$38] -- DISTRIBUTE_RESULT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$36]) + project ([$$38]) -- STREAM_PROJECT |PARTITIONED| - assign [$$36] <- [{"deptId": $#1, "star_cost": $$39}] + assign [$$38] <- [{"deptId": $#1, "star_cost": $$41}] -- ASSIGN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - group by ([$#1 := $$44]) decor ([]) { - aggregate [$$39] <- [agg-sql-sum($$43)] + group by ([$#1 := $$46]) decor ([]) { + aggregate [$$41] <- [agg-sql-sum($$45)] -- AGGREGATE |LOCAL| nested tuple source -- NESTED_TUPLE_SOURCE |LOCAL| } - -- SORT_GROUP_BY[$$44] |PARTITIONED| + -- SORT_GROUP_BY[$$46] |PARTITIONED| exchange - -- HASH_PARTITION_EXCHANGE [$$44] |PARTITIONED| - group by ([$$44 := $$37]) decor ([]) { - aggregate [$$43] <- [agg-local-sql-sum($$34)] + -- HASH_PARTITION_EXCHANGE [$$46] |PARTITIONED| + group by ([$$46 := $$39]) decor ([]) { + aggregate [$$45] <- [agg-local-sql-sum($$36)] -- AGGREGATE |LOCAL| nested tuple source -- NESTED_TUPLE_SOURCE |LOCAL| } - -- SORT_GROUP_BY[$$37] |PARTITIONED| + -- SORT_GROUP_BY[$$39] |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$34, $$37]) + project ([$$36, $$39]) -- STREAM_PROJECT |PARTITIONED| - assign [$$37] <- [substring($$41.getField("department_id"), 0)] + assign [$$39] <- [substring($$43.getField("department_id"), 0)] -- ASSIGN |PARTITIONED| - project ([$$34, $$41]) + project ([$$36, $$43]) -- STREAM_PROJECT |PARTITIONED| - assign [$$34, $$41] <- [$$e.getField("salary"), $$e.getField("dept")] + assign [$$36, $$43] <- [$$e.getField("salary"), $$e.getField("dept")] -- ASSIGN |PARTITIONED| project ([$$e]) -- STREAM_PROJECT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$38, $$e] <- gby.Employee + data-scan []<-[$$40, $$e] <- gby.Employee -- DATASOURCE_SCAN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm index e2e1c91..7aec0e1 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/explain/explain_field_access_closed/explain_field_access_closed.1.adm @@ -1,40 +1,40 @@ -distribute result [$$35] +distribute result [$$37] -- DISTRIBUTE_RESULT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$35]) + project ([$$37]) -- STREAM_PROJECT |PARTITIONED| - assign [$$35] <- [{"deptId": $#1, "star_cost": $$38}] + assign [$$37] <- [{"deptId": $#1, "star_cost": $$40}] -- ASSIGN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - group by ([$#1 := $$42]) decor ([]) { - aggregate [$$38] <- [agg-sql-sum($$41)] + group by ([$#1 := $$44]) decor ([]) { + aggregate [$$40] <- [agg-sql-sum($$43)] -- AGGREGATE |LOCAL| nested tuple source -- NESTED_TUPLE_SOURCE |LOCAL| } - -- SORT_GROUP_BY[$$42] |PARTITIONED| + -- SORT_GROUP_BY[$$44] |PARTITIONED| exchange - -- HASH_PARTITION_EXCHANGE [$$42] |PARTITIONED| - group by ([$$42 := $$36]) decor ([]) { - aggregate [$$41] <- [agg-local-sql-sum($$33)] + -- HASH_PARTITION_EXCHANGE [$$44] |PARTITIONED| + group by ([$$44 := $$38]) decor ([]) { + aggregate [$$43] <- [agg-local-sql-sum($$35)] -- AGGREGATE |LOCAL| nested tuple source -- NESTED_TUPLE_SOURCE |LOCAL| } - -- SORT_GROUP_BY[$$36] |PARTITIONED| + -- SORT_GROUP_BY[$$38] |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - project ([$$33, $$36]) + project ([$$35, $$38]) -- STREAM_PROJECT |PARTITIONED| - assign [$$36, $$33] <- [substring($$e.getField(1), 0), $$e.getField(2)] + assign [$$38, $$35] <- [substring($$e.getField(1), 0), $$e.getField(2)] -- ASSIGN |PARTITIONED| project ([$$e]) -- STREAM_PROJECT |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - data-scan []<-[$$37, $$e] <- gby.Employee + data-scan []<-[$$39, $$e] <- gby.Employee -- DATASOURCE_SCAN |PARTITIONED| exchange -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/function/issue-2394/issue-2394.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/function/issue-2394/issue-2394.1.adm new file mode 100644 index 0000000..83efad9 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/function/issue-2394/issue-2394.1.adm @@ -0,0 +1 @@ +{ "t": { "id": 999403843673718784, "timestamp_ms": "1527111419014", "user": { "id": 988455822727393280, "id_str": "988455822727393280", "screen_name": "TweetUser" }, "place": { "country_code": "US", "country": "United States", "full_name": "Riverside, CA", "bounding_box": { "coordinates": [ [ [ -117.523867, 33.85216 ], [ -117.523867, 34.019484 ], [ -117.271365, 34.019484 ], [ -117.271365, 33.85216 ] ] ] } } }, "temp": [ { "f": { "id": 999403845, "timestamp_ms": "1527111419014", "user": { "id": 988455822727393281, "id_str": "988455822727393281", "screen_name": "TweetUser" }, "place": { "country_code": "US", "country": "United States", "full_name": "Riverside, CA", "bounding_box": { "coordinates": [ [ [ -117.523867, 33.85216 ], [ -117.523867, 34.019484 ], [ -117.271365, 34.019484 ], [ -117.271365, 33.85216 ] ] ] } } } }, { "f": { "id": 999403846, "timestamp_ms": "1527111419014", "user": { "id": 988455822727393282, "id_str": "988455822727393282", "screen_name": "TweetUser" }, "place": { "country_code": "US", "country": "United States", "full_name": "Riverside, CA", "bounding_box": { "coordinates": [ [ [ -117.523867, 33.85216 ], [ -117.523867, 34.019484 ], [ -117.271365, 34.019484 ], [ -117.271365, 33.85216 ] ] ] } } } } ] } diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index acb544f..2ce8668 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -8552,6 +8552,13 @@ </compilation-unit> </test-case> </test-group> + <test-group name="function"> + <test-case FilePath="function"> + <compilation-unit name="issue-2394"> + <output-dir compare="Text">issue-2394</output-dir> + </compilation-unit> + </test-case> + </test-group> <test-group name="feeds"> <test-case FilePath="feeds"> <compilation-unit name="feeds_07"> diff --git a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java index e9ff109..dd7061f 100644 --- a/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java +++ b/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java @@ -77,7 +77,7 @@ } inlineDeclaredUdfs(); rewriteFunctionName(); - topStatement.setVarCounter(context.getVarCounter()); + topStatement.setVarCounter(context.getVarCounter().get()); } private void wrapInLets() { diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java index 10cd7d8..4173563 100644 --- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java +++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/rewrites/LangRewritingContext.java @@ -21,23 +21,19 @@ import java.util.HashMap; import org.apache.asterix.lang.common.struct.VarIdentifier; +import org.apache.hyracks.algebricks.core.algebra.base.Counter; public final class LangRewritingContext { - private int mark = 0; - private int varCounter; + private Counter varCounter; private int systemVarCounter = 1; private HashMap<Integer, VarIdentifier> oldVarIdToNewVarId = new HashMap<>(); public LangRewritingContext(int varCounter) { - this.varCounter = varCounter; + this.varCounter = new Counter(varCounter); } - public int getVarCounter() { + public Counter getVarCounter() { return varCounter; - } - - public void setVarCounter(int varCounter) { - this.varCounter = varCounter; } /** @@ -50,7 +46,7 @@ * @return the new varible. */ public VarIdentifier mapOldId(Integer oldId, String varValue) { - int n = newId(); + int n = increaseAndGetCtr(); VarIdentifier newVar = new VarIdentifier(varValue); newVar.setId(n); oldVarIdToNewVarId.put(oldId, newVar); @@ -62,22 +58,14 @@ } public VarIdentifier newVariable() { - int id = newId(); + int id = increaseAndGetCtr(); // Prefixes system-generated variables with "#". return new VarIdentifier("#" + (systemVarCounter++), id); } - public void markCounter() { - mark = varCounter; - } - - public void resetCounter() { - varCounter = mark; - } - - private int newId() { - varCounter++; - return varCounter; + private int increaseAndGetCtr() { + varCounter.inc(); + return varCounter.get(); } } diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java index 36c8145..647b50e 100644 --- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java +++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java @@ -139,7 +139,7 @@ rewriteDistinctAggregations(); // Sets the var counter of the query. - topStatement.setVarCounter(context.getVarCounter()); + topStatement.setVarCounter(context.getVarCounter().get()); } protected void rewriteGroupByAggregationSugar() throws CompilationException { diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java index 392ccdb..81b21c8 100644 --- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java +++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/base/AbstractSqlppExpressionScopingVisitor.java @@ -78,7 +78,7 @@ */ public AbstractSqlppExpressionScopingVisitor(LangRewritingContext context, List<VarIdentifier> externalVars) { this.context = context; - this.scopeChecker.setVarCounter(new Counter(context.getVarCounter())); + this.scopeChecker.setVarCounter(context.getVarCounter()); if (externalVars != null) { for (VarIdentifier paramVar : externalVars) { scopeChecker.getCurrentScope().addSymbolToScope(paramVar); @@ -214,7 +214,6 @@ public Expression visit(Query q, ILangExpression arg) throws CompilationException { q.setBody(visit(q.getBody(), q)); q.setVarCounter(scopeChecker.getVarCounter()); - context.setVarCounter(scopeChecker.getVarCounter()); return null; } -- To view, visit https://asterix-gerrit.ics.uci.edu/2673 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8ea1ee7de140d6556af03f07a5ec7bc278b011ba Gerrit-PatchSet: 11 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Xikui Wang <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Dmitry Lychagin <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Steven Jacobs <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]>
