>From Peeyush Gupta <[email protected]>:
Peeyush Gupta has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17901 )
Change subject: [NO ISSUE][COMP] Disable ExtractCommonExpressionsRule for
insert/upserts
......................................................................
[NO ISSUE][COMP] Disable ExtractCommonExpressionsRule for insert/upserts
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
On large upserts/inserts containing lists, the ExtractCommonExpressionsRule
creates a large number of assign operators causing stack overflow.
Change-Id: Ifa6ce2b5dbc036c7f24391013bf53bd504433fda
---
M
hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
1 file changed, 24 insertions(+), 0 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/01/17901/1
diff --git
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
index e2ba557..2c27589 100644
---
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
+++
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
@@ -97,6 +97,7 @@
ignoreOps.add(LogicalOperatorTag.AGGREGATE);
ignoreOps.add(LogicalOperatorTag.RUNNINGAGGREGATE);
ignoreOps.add(LogicalOperatorTag.WINDOW); //TODO: can extract from
partition/order/frame expressions
+ ignoreOps.add(LogicalOperatorTag.INSERT_DELETE_UPSERT);
}
@Override
@@ -121,6 +122,12 @@
&& op.getOperatorTag() !=
LogicalOperatorTag.DELEGATE_OPERATOR) {
return false;
}
+ if (!op.getInputs().isEmpty()) {
+ AbstractLogicalOperator childOp = (AbstractLogicalOperator)
op.getInputs().get(0).getValue();
+ if (childOp.getOperatorTag() ==
LogicalOperatorTag.INSERT_DELETE_UPSERT) {
+ return false;
+ }
+ }
exprEqClassMap.clear();
substVisitor.setContext(context);
boolean modified = removeCommonExpressions(opRef, context);
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17901
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: Ifa6ce2b5dbc036c7f24391013bf53bd504433fda
Gerrit-Change-Number: 17901
Gerrit-PatchSet: 1
Gerrit-Owner: Peeyush Gupta <[email protected]>
Gerrit-MessageType: newchange