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