You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2023/01/06 19:29:07 UTC

Change in asterixdb[master]: [ASTERIXDB-3096][COMP][WIP] Array-index recognition bug w/ multiple s...

From Glenn Galvizo <gg...@uci.edu>:

Glenn Galvizo has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17306 )


Change subject: [ASTERIXDB-3096][COMP][WIP] Array-index recognition bug w/ multiple subplans
......................................................................

[ASTERIXDB-3096][COMP][WIP] Array-index recognition bug w/ multiple subplans

- user model changes: no
- storage format changes: no
- interface changes: no

details:
Fixing a bug where an error is thrown for a query containing multiple
subplans. A deep-copy was being made alongside the original, and there
was a use of the original instead of the deep-copy.

Change-Id: I567fa4e47a5cf10bf6ab571c06780f7e41d028ef
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java
1 file changed, 24 insertions(+), 2 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/06/17306/1

diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java
index 9a370c6..587132f 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java
@@ -204,8 +204,12 @@
                         // Add the inputs from our subplan.
                         Mutable<ILogicalOperator> traversalOperator = traversalOutput.first.getInputs().get(0);
                         while (traversalOperator != null) {
-                            workingNewOperator.getInputs().add(new MutableObject<>(
-                                    OperatorManipulationUtil.deepCopy(traversalOperator.getValue())));
+                            ILogicalOperator traversalOperatorDeepCopy =
+                                    OperatorManipulationUtil.deepCopy(traversalOperator.getValue());
+                            if (traversalOperator.getValue().equals(traversalOutput.second)) {
+                                traversalOutput.second = (UnnestOperator) traversalOperatorDeepCopy;
+                            }
+                            workingNewOperator.getInputs().add(new MutableObject<>(traversalOperatorDeepCopy));
                             workingNewOperator = workingNewOperator.getInputs().get(0).getValue();
                             traversalOperator = (traversalOperator.getValue().getInputs().isEmpty()) ? null
                                     : traversalOperator.getValue().getInputs().get(0);

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17306
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I567fa4e47a5cf10bf6ab571c06780f7e41d028ef
Gerrit-Change-Number: 17306
Gerrit-PatchSet: 1
Gerrit-Owner: Glenn Galvizo <gg...@uci.edu>
Gerrit-MessageType: newchange