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

wyk 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 7fc2a3d820 [ASTERIXDB-3308][COMP]: CH2 Q7 fails with internal error 
(with CBO on)
7fc2a3d820 is described below

commit 7fc2a3d820427ebe3e5923a6c9f3581e351ea634
Author: Vijay Sarathy <[email protected]>
AuthorDate: Thu Dec 7 11:11:47 2023 -0800

    [ASTERIXDB-3308][COMP]: CH2 Q7 fails with internal error (with CBO on)
    
    Change-Id: Icbdfc40090af6f7b4d7148c27a873d7e43830246
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18002
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: <[email protected]>
    Reviewed-by: Vijay Sarathy <[email protected]>
---
 .../org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java   | 3 ---
 .../main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java   | 5 +++++
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
index c24dd7f218..7ed23f7502 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
@@ -1015,7 +1015,6 @@ public class EnumerateJoinsRule implements 
IAlgebraicRewriteRule {
     // on top of that LeafInput. Modify the joinLeafInputsHashMap as well.
     private void pushAssignsIntoLeafInputs(IPlanPrettyPrinter pp, 
List<ILogicalOperator> leafInputs,
             List<AssignOperator> assignOps, List<ILogicalExpression> 
assignJoinExprs) throws AlgebricksException {
-        int pos = 0;
         for (ILogicalOperator lo : leafInputs) {
             ILogicalOperator joinLeafInput = lo;
             printPlan(pp, (AbstractLogicalOperator) joinLeafInput, "Incoming 
leaf Input");
@@ -1023,10 +1022,8 @@ public class EnumerateJoinsRule implements 
IAlgebraicRewriteRule {
             if (assignNumber != -1) {
                 joinLeafInput = addAssignToLeafInput(joinLeafInput, 
assignOps.get(assignNumber));
                 printPlan(pp, (AbstractLogicalOperator) joinLeafInput, 
"Modified leaf Input");
-                leafInputs.add(pos, joinLeafInput);
                 assignOps.remove(assignNumber);
             }
-            pos++;
         }
     }
 
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
index e748e55ae5..76f87b27c8 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
@@ -440,6 +440,7 @@ public class JoinEnum {
             usedVars.clear();
             ILogicalExpression expr = jc.joinCondition;
             expr.getUsedVariables(usedVars);
+            List<AssignOperator> erase = new ArrayList<>();
             for (AssignOperator aOp : assignOps) {
                 for (int i = 0; i < aOp.getVariables().size(); i++) {
                     if (usedVars.contains(aOp.getVariables().get(i))) {
@@ -447,9 +448,13 @@ public class JoinEnum {
                                 aOp.getVariables().get(i), 
aOp.getExpressions().get(i).getValue());
                         jc.joinCondition = expr;
                         jc.selectivity = 
stats.getSelectivityFromAnnotationMain(jc.joinCondition, true);
+                        erase.add(aOp);
                     }
                 }
             }
+            for (int i = erase.size() - 1; i >= 0; i--) {
+                assignOps.remove(erase.get(i));
+            }
         }
 
         // now fill the datasetBits for each join condition.

Reply via email to