>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]>

Reply via email to