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

dlych 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 db53e7a  [NO-ISSUE][IDX] Completing isomorphism check for index 
insert/upsert/delete.
db53e7a is described below

commit db53e7a151152a33a4682dbfae22d7f505563ed3
Author: Glenn <[email protected]>
AuthorDate: Fri Apr 9 10:56:27 2021 -0700

    [NO-ISSUE][IDX] Completing isomorphism check for index insert/upsert/delete.
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Isomorphism check for IndexInsertUpsertDeleteOperator now checks all
    expressions of the operator itself.
    
    Change-Id: I732c28afba58d7f6a8b3ba4613f0df2fc2d0aa94
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/10927
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Dmitry Lychagin <[email protected]>
---
 .../visitors/IsomorphismOperatorVisitor.java       | 23 +++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git 
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java
 
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java
index ff60a90..a9f9626 100644
--- 
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java
+++ 
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/IsomorphismOperatorVisitor.java
@@ -601,13 +601,30 @@ public class IsomorphismOperatorVisitor implements 
ILogicalOperatorVisitor<Boole
             return Boolean.FALSE;
         }
         IndexInsertDeleteUpsertOperator insertOpArg = 
(IndexInsertDeleteUpsertOperator) copyAndSubstituteVar(op, arg);
-        boolean isomorphic = 
VariableUtilities.varListEqualUnordered(op.getSchema(), 
insertOpArg.getSchema());
-        if (!isomorphic || 
!op.getDataSourceIndex().equals(insertOpArg.getDataSourceIndex())) {
+        if (!VariableUtilities.varListEqualUnordered(op.getSchema(), 
insertOpArg.getSchema())) {
+            return Boolean.FALSE;
+        }
+
+        // Verify that our index expressions and variables are equal.
+        if (!Objects.equals(op.getDataSourceIndex(), 
insertOpArg.getDataSourceIndex())
+                || !Objects.equals(op.getPrimaryKeyExpressions(), 
insertOpArg.getPrimaryKeyExpressions())
+                || !Objects.equals(op.getSecondaryKeyExpressions(), 
insertOpArg.getSecondaryKeyExpressions())
+                || !Objects.equals(op.getFilterExpression(), 
insertOpArg.getFilterExpression())
+                || !Objects.equals(op.getOperation(), 
insertOpArg.getOperation())
+                || (op.isBulkload() != insertOpArg.isBulkload())
+                || !Objects.equals(op.getAdditionalFilteringExpressions(),
+                        insertOpArg.getAdditionalFilteringExpressions())
+                || !Objects.equals(op.getPrevSecondaryKeyExprs(), 
insertOpArg.getPrevSecondaryKeyExprs())
+                || !Objects.equals(op.getPrevAdditionalFilteringExpression(),
+                        insertOpArg.getPrevAdditionalFilteringExpression())
+                || !Objects.equals(op.getUpsertIndicatorExpr(), 
insertOpArg.getUpsertIndicatorExpr())
+                || (op.getNumberOfAdditionalNonFilteringFields() != insertOpArg
+                        .getNumberOfAdditionalNonFilteringFields())) {
             return Boolean.FALSE;
         }
 
         // Check our nested plans as well.
-        return (!compareSubplans(op.getNestedPlans(), 
insertOpArg.getNestedPlans())) ? Boolean.TRUE : Boolean.FALSE;
+        return compareSubplans(op.getNestedPlans(), 
insertOpArg.getNestedPlans());
     }
 
     @Override

Reply via email to