>From Michael Blow <[email protected]>:

Michael Blow has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19328 )

Change subject: Merge branch 'gerrit/stabilization-1cffa2bc98' into 
'gerrit/goldfish'
......................................................................

Merge branch 'gerrit/stabilization-1cffa2bc98' into 'gerrit/goldfish'

Ext-ref: MB-64561
Change-Id: I5bf1f7bd24a4af26211a3014655b8b712f50db32
---
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/schema/ExpectedSchemaBuilder.java
2 files changed, 20 insertions(+), 73 deletions(-)

Approvals:
  Michael Blow: Looks good to me, approved; Verified
  Anon. E. Moose #1000171:




diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/schema/ExpectedSchemaBuilder.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/schema/ExpectedSchemaBuilder.java
index fb30faf..f4b6cb0 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/schema/ExpectedSchemaBuilder.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/schema/ExpectedSchemaBuilder.java
@@ -56,17 +56,10 @@

     public boolean setSchemaFromExpression(AbstractFunctionCallExpression 
expr, LogicalVariable producedVar,
             IVariableTypeEnvironment typeEnv) throws AlgebricksException {
-<<<<<<< HEAD   (de0acb Merge branch 'gerrit/trinity' into 'gerrit/goldfish')
-        return buildExpectedSchemaNodes(expr, producedVar, typeEnv);
-    }
-
-    public boolean 
setSchemaFromCalculatedExpression(AbstractFunctionCallExpression expr, 
LogicalVariable producedVar,
-=======
         return buildExpectedSchemaNodes(expr, typeEnv, producedVar);
     }

     private boolean 
setSchemaFromCalculatedExpression(AbstractFunctionCallExpression expr, 
LogicalVariable producedVar,
->>>>>>> BRANCH (87f19a [ASTERIXDB-3540][COMP] Fixed calculation of expected 
schema )
             IVariableTypeEnvironment typeEnv) throws AlgebricksException {
         //Parent always nested
         AbstractComplexExpectedSchemaNode parent = 
(AbstractComplexExpectedSchemaNode) buildNestedNode(expr, typeEnv);
@@ -116,71 +109,6 @@
         return varToNode.get(variable);
     }

-<<<<<<< HEAD   (de0acb Merge branch 'gerrit/trinity' into 'gerrit/goldfish')
-    private boolean buildExpectedSchemaNodes(ILogicalExpression expr, 
LogicalVariable producedVar,
-            IVariableTypeEnvironment typeEnv) throws AlgebricksException {
-        return buildNestedNodes(expr, producedVar, typeEnv);
-    }
-
-    private boolean buildNestedNodes(ILogicalExpression expr, LogicalVariable 
producedVar,
-            IVariableTypeEnvironment typeEnv) throws AlgebricksException {
-        //The current node expression
-        boolean changed = false;
-        if (expr.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) {
-            return false;
-        }
-        AbstractFunctionCallExpression myExpr = 
(AbstractFunctionCallExpression) expr;
-        if (!SUPPORTED_FUNCTIONS.contains(myExpr.getFunctionIdentifier()) || 
noArgsOrFirstArgIsConstant(myExpr)) {
-            // Check if the function consists of the Supported Functions
-            for (Mutable<ILogicalExpression> arg : myExpr.getArguments()) {
-                changed |= buildNestedNodes(arg.getValue(), producedVar, 
typeEnv);
-            }
-            return changed;
-        }
-        // if the child is not a function expression, then just one node.
-        if (BuiltinFunctions.ARRAY_STAR.equals(myExpr.getFunctionIdentifier())
-                || 
BuiltinFunctions.SCAN_COLLECTION.equals(myExpr.getFunctionIdentifier())) {
-            // these supported function won't have second child
-            IExpectedSchemaNode expectedSchemaNode = buildNestedNode(expr, 
typeEnv);
-            if (expectedSchemaNode != null) {
-                changed |=
-                        
setSchemaFromCalculatedExpression((AbstractFunctionCallExpression) expr, 
producedVar, typeEnv);
-            }
-        } else {
-            ILogicalExpression childExpr = 
myExpr.getArguments().get(1).getValue();
-            if (childExpr.getExpressionTag() != 
LogicalExpressionTag.FUNCTION_CALL) {
-                // must be a variable or constant
-                IExpectedSchemaNode expectedSchemaNode = buildNestedNode(expr, 
typeEnv);
-                if (expectedSchemaNode != null) {
-                    changed |= 
setSchemaFromCalculatedExpression((AbstractFunctionCallExpression) expr, 
producedVar,
-                            typeEnv);
-                }
-            } else {
-                // as the childExpr is a function.
-                // if the function had been evaluated at compile time, it 
would have been
-                // evaluated at this stage of compilation.
-                // eg: field-access(t.r.p, substring("name",2,4))
-                // this will be evaluated to field-access(t.r.p, "me") at 
compile time itself.
-                // since the execution reached this branch, this means the 
childExpr
-                // need to be evaluated at runtime, hence the childExpr should 
also be checked
-                // for possible pushdown.
-                // eg: field-access(t.r.p, substring(x.y.age_field, 0, 4))
-                ILogicalExpression parentExpr = 
myExpr.getArguments().get(0).getValue();
-                IExpectedSchemaNode parentExpectedNode = 
buildNestedNode(parentExpr, typeEnv);
-                if (parentExpectedNode != null) {
-                    changed |= 
setSchemaFromCalculatedExpression((AbstractFunctionCallExpression) parentExpr,
-                            producedVar, typeEnv);
-                }
-                changed |= buildNestedNodes(childExpr, producedVar, typeEnv);
-            }
-        }
-        return changed;
-    }
-
-    private boolean noArgsOrFirstArgIsConstant(AbstractFunctionCallExpression 
myExpr) {
-        List<Mutable<ILogicalExpression>> args = myExpr.getArguments();
-        return args.isEmpty() || args.get(0).getValue().getExpressionTag() == 
LogicalExpressionTag.CONSTANT;
-=======
     private boolean buildExpectedSchemaNodes(ILogicalExpression expr, 
IVariableTypeEnvironment typeEnv,
             LogicalVariable producedVar) throws AlgebricksException {
         return buildNestedNodes(expr, typeEnv, producedVar);
@@ -243,7 +171,6 @@
             }
         }
         return changed;
->>>>>>> BRANCH (87f19a [ASTERIXDB-3540][COMP] Fixed calculation of expected 
schema )
     }

     private IExpectedSchemaNode buildNestedNode(ILogicalExpression expr, 
IVariableTypeEnvironment typeEnv)
@@ -284,6 +211,11 @@
         return null;
     }

+    private boolean noArgsOrFirstArgIsConstant(AbstractFunctionCallExpression 
myExpr) {
+        List<Mutable<ILogicalExpression>> args = myExpr.getArguments();
+        return args.isEmpty() || args.get(0).getValue().getExpressionTag() == 
LogicalExpressionTag.CONSTANT;
+    }
+
     private IExpectedSchemaNode changeNodeForVariable(LogicalVariable 
sourceVar,
             AbstractFunctionCallExpression parentExpression, 
ILogicalExpression expression) {
         //Get the associated node with the sourceVar (if any)

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19328
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: goldfish
Gerrit-Change-Id: I5bf1f7bd24a4af26211a3014655b8b712f50db32
Gerrit-Change-Number: 19328
Gerrit-PatchSet: 3
Gerrit-Owner: Michael Blow <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Michael Blow <[email protected]>
Gerrit-CC: Jenkins <[email protected]>
Gerrit-MessageType: merged

Reply via email to