>From Preetham Poluparthi <[email protected]>:
Attention is currently required from: Ali Alsuliman, Michael Blow.
Hello Ali Alsuliman, Jenkins, Michael Blow, Anon. E. Moose #1000171,
I'd like you to do a code review.
Please visit
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21064?usp=email
to review the following change.
Change subject: Revert "[ASTERIXDB-3713][COMP] Directive for extracting common
ops"
......................................................................
Revert "[ASTERIXDB-3713][COMP] Directive for extracting common ops"
This reverts commit da5ca84a0643f3661f3fb094ae4c6fc268f6b41a.
Reason for revert: we dont need this directive
Change-Id: I259a5e6792fbd8d6b02842e01bd1469be324287c
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
M
hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
2 files changed, 3 insertions(+), 90 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/64/21064/1
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
index 98e26a2..3daf74b 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
@@ -43,7 +43,6 @@
import org.apache.asterix.optimizer.rules.util.EquivalenceClassUtils;
import org.apache.asterix.translator.SqlppExpressionToPlanTranslator;
import org.apache.asterix.translator.SqlppExpressionToPlanTranslatorFactory;
-import org.apache.hyracks.algebricks.rewriter.rules.ExtractCommonOperatorsRule;
public class SqlppCompilationProvider implements ILangCompilationProvider {
@@ -108,7 +107,6 @@
DisjunctivePredicateToJoinRule.REWRITE_OR_AS_JOIN_OPTION,
SetAsterixPhysicalOperatorsRule.REWRITE_ATTEMPT_BATCH_ASSIGN,
EquivalenceClassUtils.REWRITE_INTERNAL_QUERYUID_PK,
SqlppQueryRewriter.SQL_COMPAT_OPTION,
- JoinEnum.CBO_FULL_ENUM_LEVEL_KEY, JoinEnum.CBO_CP_ENUM_KEY,
- ExtractCommonOperatorsRule.EXTRACT_COMMON_OPS));
+ JoinEnum.CBO_FULL_ENUM_LEVEL_KEY, JoinEnum.CBO_CP_ENUM_KEY));
}
}
diff --git
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
index ae8a4f6..88cfaad 100644
---
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
+++
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
@@ -60,9 +60,6 @@
*/
public class ExtractCommonOperatorsRule implements IAlgebraicRewriteRule {
- public static final String EXTRACT_COMMON_OPS = "extract_common_ops";
- public static final boolean EXTRACT_DEFAULT = true;
-
private final HashMap<Mutable<ILogicalOperator>,
List<Mutable<ILogicalOperator>>> childrenToParents =
new HashMap<>();
private final List<Mutable<ILogicalOperator>> roots = new ArrayList<>();
@@ -73,15 +70,10 @@
private int lastUsedClusterId = 0;
private final Map<Mutable<ILogicalOperator>, BitSet> replicateToOutputs =
new HashMap<>();
private final List<Pair<Mutable<ILogicalOperator>, Boolean>> newOutputs =
new ArrayList<>();
- private Boolean extractCommonOpsEnabled = null;
@Override
public boolean rewritePre(Mutable<ILogicalOperator> opRef,
IOptimizationContext context)
throws AlgebricksException {
- if (extractCommonOpsEnabled == null) {
- Object option =
context.getMetadataProvider().getConfig().get(EXTRACT_COMMON_OPS);
- extractCommonOpsEnabled = option != null ?
Boolean.parseBoolean(option.toString()) : EXTRACT_DEFAULT;
- }
AbstractLogicalOperator op = (AbstractLogicalOperator)
opRef.getValue();
if (op.getOperatorTag() != LogicalOperatorTag.WRITE &&
op.getOperatorTag() != LogicalOperatorTag.WRITE_RESULT
&& op.getOperatorTag() !=
LogicalOperatorTag.DISTRIBUTE_RESULT) {
@@ -109,11 +101,7 @@
changed = false;
// applying the rewriting until fixpoint
topDownMaterialization(roots);
- if (extractCommonOpsEnabled) {
- genCandidatesGrow();
- } else {
- genCandidates();
- }
+ genCandidates();
removeTrivialShare();
if (!equivalenceClasses.isEmpty()) {
changed = rewrite(context);
@@ -424,7 +412,7 @@
}
}
- private void genCandidatesGrow() throws AlgebricksException {
+ private void genCandidates() throws AlgebricksException {
List<List<Mutable<ILogicalOperator>>> previousEquivalenceClasses = new
ArrayList<>();
boolean grown = true;
while (equivalenceClasses.size() > 0 && grown) {
@@ -469,40 +457,6 @@
}
}
- private void genCandidates() throws AlgebricksException {
- List<List<Mutable<ILogicalOperator>>> previousEquivalenceClasses = new
ArrayList<>();
- while (equivalenceClasses.size() > 0) {
- previousEquivalenceClasses.clear();
- for (List<Mutable<ILogicalOperator>> candidates :
equivalenceClasses) {
- List<Mutable<ILogicalOperator>> candidatesCopy = new
ArrayList<>(candidates);
- previousEquivalenceClasses.add(candidatesCopy);
- }
- List<Mutable<ILogicalOperator>> currentLevelOpRefs = new
ArrayList<>();
- for (List<Mutable<ILogicalOperator>> candidates :
equivalenceClasses) {
- if (candidates.size() > 0) {
- for (Mutable<ILogicalOperator> opRef : candidates) {
- List<Mutable<ILogicalOperator>> refs =
childrenToParents.get(opRef);
- if (refs != null) {
- currentLevelOpRefs.addAll(refs);
- }
- }
- }
- if (currentLevelOpRefs.size() == 0) {
- continue;
- }
- candidates(currentLevelOpRefs, candidates);
- }
- if (currentLevelOpRefs.size() == 0) {
- break;
- }
- prune();
- }
- if (equivalenceClasses.size() < 1 && previousEquivalenceClasses.size()
> 0) {
- equivalenceClasses.addAll(previousEquivalenceClasses);
- prune();
- }
- }
-
private void topDownMaterialization(List<Mutable<ILogicalOperator>> tops) {
List<Mutable<ILogicalOperator>> candidates = new ArrayList<>();
List<Mutable<ILogicalOperator>> nextLevel = new ArrayList<>();
@@ -572,45 +526,6 @@
return true;
}
- private boolean candidates(List<Mutable<ILogicalOperator>> opList,
List<Mutable<ILogicalOperator>> candidates) {
- List<Mutable<ILogicalOperator>> previousCandidates = new
ArrayList<>(candidates);
- candidates.clear();
- boolean validCandidate = false;
- for (Mutable<ILogicalOperator> op : opList) {
- List<Mutable<ILogicalOperator>> inputs = op.getValue().getInputs();
- for (int i = 0; i < inputs.size(); i++) {
- Mutable<ILogicalOperator> inputRef = inputs.get(i);
- validCandidate = false;
- for (Mutable<ILogicalOperator> candidate : previousCandidates)
{
- // if current input is in candidates
- if (inputRef.getValue().equals(candidate.getValue())) {
- if (inputs.size() == 1) {
- validCandidate = true;
- } else {
- BitSet candidateInputBitMap =
opToCandidateInputs.get(op);
- if (candidateInputBitMap == null) {
- candidateInputBitMap = new
BitSet(inputs.size());
- opToCandidateInputs.put(op,
candidateInputBitMap);
- }
- candidateInputBitMap.set(i);
- if (candidateInputBitMap.cardinality() ==
inputs.size()) {
- validCandidate = true;
- }
- }
- break;
- }
- }
- }
- if (!validCandidate) {
- continue;
- }
- if (!candidates.contains(op)) {
- candidates.add(op);
- }
- }
- return true;
- }
-
private void prune() throws AlgebricksException {
List<List<Mutable<ILogicalOperator>>> previousEquivalenceClasses = new
ArrayList<>();
for (List<Mutable<ILogicalOperator>> candidates : equivalenceClasses) {
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21064?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I259a5e6792fbd8d6b02842e01bd1469be324287c
Gerrit-Change-Number: 21064
Gerrit-PatchSet: 1
Gerrit-Owner: Preetham Poluparthi <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Michael Blow <[email protected]>
Gerrit-Attention: Ali Alsuliman <[email protected]>
Gerrit-Attention: Michael Blow <[email protected]>