This is an automated email from the ASF dual-hosted git repository.

peeyush pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new a909e18144 [ASTERIXDB-3316][COMP] Stack overflow during query 
compilation
a909e18144 is described below

commit a909e18144a9ec05aef53119c45c369c323131c5
Author: Peeyush Gupta <peeyush.gu...@couchbase.com>
AuthorDate: Tue Jan 23 18:08:09 2024 +0530

    [ASTERIXDB-3316][COMP] Stack overflow during query compilation
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    This patch reverts part of the change introduced with the fix of
    ASTERIXDB-3316 that caused the CancelUnnestWithNestedListifyRule
    to not fire in some legitimate queries.
    
    Change-Id: Id5b108888ffb7084f1314bf908ab7bcc9e3e764b
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18135
    Reviewed-by: Peeyush Gupta <peeyush.gu...@couchbase.com>
    Reviewed-by: Ali Alsuliman <ali.al.solai...@gmail.com>
    Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
---
 .../rules/CancelUnnestWithNestedListifyRule.java   |  3 --
 .../optimizerts/results/query_issue849-2.plan      | 33 ++++++-------------
 .../optimizerts/results/query_issue849.plan        | 37 +++++++---------------
 .../optimizerts/results_cbo/query_issue849-2.plan  | 33 ++++++-------------
 .../optimizerts/results_cbo/query_issue849.plan    | 28 ++++------------
 5 files changed, 38 insertions(+), 96 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CancelUnnestWithNestedListifyRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CancelUnnestWithNestedListifyRule.java
index 9ad3a35501..4974fed443 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CancelUnnestWithNestedListifyRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/CancelUnnestWithNestedListifyRule.java
@@ -185,9 +185,6 @@ public class CancelUnnestWithNestedListifyRule implements 
IAlgebraicRewriteRule
         if (gby.getNestedPlans().get(0).getRoots().size() != 1) {
             return false;
         }
-        if (gby.getDecorList().size() != 0) {
-            return false;
-        }
 
         AbstractLogicalOperator nestedPlanRoot =
                 (AbstractLogicalOperator) 
gby.getNestedPlans().get(0).getRoots().get(0).getValue();
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan
index e9f6596604..11bad6c909 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849-2.plan
@@ -19,27 +19,14 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- STREAM_PROJECT  |PARTITIONED|
-          -- UNNEST  |PARTITIONED|
-            -- STREAM_PROJECT  |PARTITIONED|
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                -- PRE_CLUSTERED_GROUP_BY[$$47]  |PARTITIONED|
-                        {
-                          -- AGGREGATE  |LOCAL|
-                            -- STREAM_SELECT  |LOCAL|
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                        }
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- HYBRID_HASH_JOIN [$$47][$$49]  |PARTITIONED|
+              -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
+                -- DATASOURCE_SCAN (test.s)  |PARTITIONED|
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- STABLE_SORT [$$47(ASC)]  |PARTITIONED|
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            -- HYBRID_HASH_JOIN [$$47][$$49]  |PARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
-                                -- DATASOURCE_SCAN (test.s)  |PARTITIONED|
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
-                                -- STREAM_PROJECT  |UNPARTITIONED|
-                                  -- ASSIGN  |UNPARTITIONED|
-                                    -- UNNEST  |UNPARTITIONED|
-                                      -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
+                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+              -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
+                -- STREAM_PROJECT  |UNPARTITIONED|
+                  -- ASSIGN  |UNPARTITIONED|
+                    -- UNNEST  |UNPARTITIONED|
+                      -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan
index 962b84dcd9..90e2808fd6 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/query_issue849.plan
@@ -19,30 +19,15 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- STREAM_PROJECT  |PARTITIONED|
-          -- UNNEST  |PARTITIONED|
-            -- STREAM_PROJECT  |PARTITIONED|
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                -- PRE_CLUSTERED_GROUP_BY[$$49]  |PARTITIONED|
-                        {
-                          -- AGGREGATE  |LOCAL|
-                            -- STREAM_SELECT  |LOCAL|
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                        }
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- HYBRID_HASH_JOIN [$$48][$$47]  |PARTITIONED|
+              -- HASH_PARTITION_EXCHANGE [$$48]  |PARTITIONED|
+                -- ASSIGN  |UNPARTITIONED|
+                  -- UNNEST  |UNPARTITIONED|
+                    -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
+              -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
+                -- STREAM_PROJECT  |PARTITIONED|
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- STABLE_SORT [$$49(ASC)]  |PARTITIONED|
-                      -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            -- HYBRID_HASH_JOIN [$$48][$$47]  |PARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$48]  |PARTITIONED|
-                                -- RUNNING_AGGREGATE  |UNPARTITIONED|
-                                  -- ASSIGN  |UNPARTITIONED|
-                                    -- UNNEST  |UNPARTITIONED|
-                                      -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
-                                -- ASSIGN  |PARTITIONED|
-                                  -- STREAM_PROJECT  |PARTITIONED|
-                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                      -- DATASOURCE_SCAN (test.s)  
|PARTITIONED|
-                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                    -- DATASOURCE_SCAN (test.s)  |PARTITIONED|
+                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
index e9f6596604..e23c4e53d2 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849-2.plan
@@ -19,27 +19,14 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- STREAM_PROJECT  |PARTITIONED|
-          -- UNNEST  |PARTITIONED|
-            -- STREAM_PROJECT  |PARTITIONED|
-              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                -- PRE_CLUSTERED_GROUP_BY[$$47]  |PARTITIONED|
-                        {
-                          -- AGGREGATE  |LOCAL|
-                            -- STREAM_SELECT  |LOCAL|
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                        }
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- HYBRID_HASH_JOIN [$$47][$$49]  |PARTITIONED|
+              -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
+                -- DATASOURCE_SCAN (test.s)  |PARTITIONED|
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- STABLE_SORT [$$47(ASC)]  |PARTITIONED|
-                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            -- HYBRID_HASH_JOIN [$$47][$$49]  |PARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$47]  |PARTITIONED|
-                                -- DATASOURCE_SCAN (test.s)  |PARTITIONED|
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                              -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
-                                -- STREAM_PROJECT  |UNPARTITIONED|
-                                  -- ASSIGN  |UNPARTITIONED|
-                                    -- UNNEST  |UNPARTITIONED|
-                                      -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
+                    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+              -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
+                -- STREAM_PROJECT  |UNPARTITIONED|
+                  -- ASSIGN  |UNPARTITIONED|
+                    -- UNNEST  |UNPARTITIONED|
+                      -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
index aa1c0bb65c..59b09a98c6 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
@@ -19,25 +19,11 @@
     -- STREAM_PROJECT  |PARTITIONED|
       -- ASSIGN  |PARTITIONED|
         -- STREAM_PROJECT  |PARTITIONED|
-          -- UNNEST  |PARTITIONED|
-            -- STREAM_PROJECT  |PARTITIONED|
+          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+            -- BTREE_SEARCH (test.s.s)  |PARTITIONED|
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                -- PRE_CLUSTERED_GROUP_BY[$$49]  |PARTITIONED|
-                        {
-                          -- AGGREGATE  |LOCAL|
-                            -- STREAM_SELECT  |LOCAL|
-                              -- NESTED_TUPLE_SOURCE  |LOCAL|
-                        }
-                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                    -- STABLE_SORT [$$49(ASC)]  |PARTITIONED|
-                      -- HASH_PARTITION_EXCHANGE [$$49]  |PARTITIONED|
-                        -- STREAM_PROJECT  |PARTITIONED|
-                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                            -- BTREE_SEARCH (test.s.s)  |PARTITIONED|
-                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                -- STABLE_SORT [$$55(ASC)]  |PARTITIONED|
-                                  -- HASH_PARTITION_EXCHANGE [$$55]  
|PARTITIONED|
-                                    -- ASSIGN  |UNPARTITIONED|
-                                      -- RUNNING_AGGREGATE  |UNPARTITIONED|
-                                        -- UNNEST  |UNPARTITIONED|
-                                          -- EMPTY_TUPLE_SOURCE  
|UNPARTITIONED|
+                -- STABLE_SORT [$$55(ASC)]  |PARTITIONED|
+                  -- HASH_PARTITION_EXCHANGE [$$55]  |PARTITIONED|
+                    -- ASSIGN  |UNPARTITIONED|
+                      -- UNNEST  |UNPARTITIONED|
+                        -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|

Reply via email to