This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 798123df1ddcb06b89b356a2a6360544e6c9fa4f
Merge: dcb4ad2 0e432a0
Author: Michael Blow <[email protected]>
AuthorDate: Fri Aug 28 08:35:10 2020 -0400

    Merge branch 'gerrit/mad-hatter'
    
    Change-Id: I2a86ca44953abfd2a7ff2cc5d5c9f340a68b356f

 .../optimizer/rules/ConstantFoldingRule.java       | 60 +++++++++++++++++++---
 .../rules/DisjunctivePredicateToJoinRule.java      | 24 +++++++--
 .../IntroduceSecondaryIndexInsertDeleteRule.java   | 37 ++++++++-----
 .../optimizer/rules/am/BTreeAccessMethod.java      |  3 ++
 .../translator/LangExpressionToPlanTranslator.java | 45 ++++++++--------
 .../SqlppExpressionToPlanTranslator.java           | 26 ++++++----
 .../skip-index/skip-secondary-btree-index-3.sqlpp  | 43 ++++++++++++++++
 .../statement-params-index-01.sqlpp                | 54 +++++++++++++++++++
 .../statement-params-index-02.sqlpp                | 54 +++++++++++++++++++
 .../skip-index/skip-secondary-btree-index-3.plan   | 15 ++++++
 .../statement-params-index-01.plan                 | 19 +++++++
 .../statement-params-index-02.plan                 | 30 +++++++++++
 .../constant_folding.2.query.sqlpp                 | 26 ++++++++++
 .../constant_folding.3.query.sqlpp                 | 26 ++++++++++
 .../constant_folding.4.query.sqlpp                 | 26 ++++++++++
 .../constant_folding.5.query.sqlpp                 | 26 ++++++++++
 .../constant_folding.6.query.sqlpp                 | 26 ++++++++++
 .../constant_folding.7.query.sqlpp                 | 26 ++++++++++
 .../statement-params/index_01/index_01.1.ddl.sqlpp | 41 +++++++++++++++
 .../index_01/index_01.2.update.sqlpp               | 26 ++++++++++
 .../index_01/index_01.3.query.sqlpp                | 36 +++++++++++++
 .../index_01/index_01.4.query.sqlpp                | 36 +++++++++++++
 .../misc/constant_folding/constant_folding.2.adm   |  4 ++
 .../misc/constant_folding/constant_folding.3.adm   | 18 +++++++
 .../misc/constant_folding/constant_folding.4.adm   |  4 ++
 .../misc/constant_folding/constant_folding.5.adm   | 18 +++++++
 .../misc/constant_folding/constant_folding.6.adm   | 18 +++++++
 .../misc/constant_folding/constant_folding.7.adm   | 18 +++++++
 .../statement-params/index_01/index_01.3.adm       |  8 +++
 .../statement-params/index_01/index_01.4.adm       |  1 +
 .../test/resources/runtimets/testsuite_sqlpp.xml   |  5 ++
 .../common/storage/DatasetResourceReference.java   |  2 +
 .../asterix/common/storage/IndexCheckpoint.java    |  2 +-
 .../visitor/OperatorExpressionVisitor.java         |  1 +
 .../management/IndexReplicationManager.java        | 11 ++--
 .../LSMSecondaryUpsertOperatorNodePushable.java    | 41 +++++++++------
 .../PersistentLocalResourceRepository.java         |  5 +-
 .../algebra/util/OperatorManipulationUtil.java     | 12 +++++
 .../AbstractIntroduceGroupByCombinerRule.java      |  2 +-
 .../rules/EnforceStructuralPropertiesRule.java     |  5 +-
 .../rules/ExtractCommonExpressionsRule.java        |  1 +
 .../rewriter/rules/ExtractCommonOperatorsRule.java | 17 +++---
 .../rewriter/rules/IntroduceProjectsRule.java      |  1 +
 .../rules/subplan/PushSubplanIntoGroupByRule.java  | 13 +++--
 44 files changed, 821 insertions(+), 91 deletions(-)

diff --cc 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
index 8c35ea3,47e0373..014ee40
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
@@@ -402,21 -408,36 +418,53 @@@ public class ConstantFoldingRule implem
              return true;
          }
  
+         private boolean foldOrArgs(ScalarFunctionCallExpression expr) {
+             // or(true,x,y) -> true; or(false,x,y) -> or(x,y)
+             boolean changed = false;
+             List<Mutable<ILogicalExpression>> argList = expr.getArguments();
+             Iterator<Mutable<ILogicalExpression>> argIter = 
argList.iterator();
+             Mutable<ILogicalExpression> argFalse = null;
+             while (argIter.hasNext()) {
+                 Mutable<ILogicalExpression> argExprRef = argIter.next();
+                 ILogicalExpression argExpr = argExprRef.getValue();
+                 if (argExpr.getExpressionTag() != 
LogicalExpressionTag.CONSTANT) {
+                     continue;
+                 }
+                 ConstantExpression cExpr = (ConstantExpression) argExpr;
+                 IAlgebricksConstantValue cValue = cExpr.getValue();
+                 if (cValue.isTrue()) {
+                     // or(true,x,y) -> true;
+                     argList.clear();
+                     argList.add(argExprRef);
+                     return true;
+                 } else if (cValue.isFalse()) {
+                     // remove 'false' from arg list, but save the expression.
+                     argFalse = argExprRef;
+                     argIter.remove();
+                     changed = true;
+                 }
+             }
+             if (argList.isEmpty() && argFalse != null) {
+                 argList.add(argFalse);
+             }
+             return changed;
+         }
++
 +        // IEvaluatorContext
 +
 +        @Override
 +        public IServiceContext getServiceContext() {
 +            return serviceContext;
 +        }
 +
 +        @Override
 +        public IHyracksTaskContext getTaskContext() {
 +            return null;
 +        }
 +
 +        @Override
 +        public IWarningCollector getWarningCollector() {
 +            return warningCollector;
 +        }
      }
  }
diff --cc 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
index 43136c0,fe03d75..e1bbacf
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/DisjunctivePredicateToJoinRule.java
@@@ -142,8 -154,9 +154,9 @@@ public class DisjunctivePredicateToJoin
  
          ILogicalExpression cExp = new ConstantExpression(new 
AsterixConstantValue(list));
          Mutable<ILogicalExpression> mutCExp = new MutableObject<>(cExp);
-         IFunctionInfo scanFctInfo = 
BuiltinFunctions.getBuiltinFunctionInfo(BuiltinFunctions.SCAN_COLLECTION);
-         UnnestingFunctionCallExpression scanExp = new 
UnnestingFunctionCallExpression(scanFctInfo, mutCExp);
+         UnnestingFunctionCallExpression scanExp = new 
UnnestingFunctionCallExpression(
 -                
BuiltinFunctions.getAsterixFunctionInfo(BuiltinFunctions.SCAN_COLLECTION));
++                
BuiltinFunctions.getBuiltinFunctionInfo(BuiltinFunctions.SCAN_COLLECTION));
+         scanExp.getArguments().add(mutCExp);
          scanExp.setSourceLocation(sourceLoc);
          LogicalVariable scanVar = context.newVar();
          UnnestOperator unn = new UnnestOperator(scanVar, new 
MutableObject<>(scanExp));
diff --cc 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index 17bc77c,e8ceba4..d38a263
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@@ -442,7 -440,7 +439,7 @@@ abstract class LangExpressionToPlanTran
          return plan;
      }
  
-     protected ILogicalOperator translateDelete(DatasetDataSource 
targetDatasource, Mutable<ILogicalExpression> varRef,
 -    private ILogicalOperator translateDelete(DatasetDataSource 
targetDatasource, LogicalVariable resVar,
++    protected ILogicalOperator translateDelete(DatasetDataSource 
targetDatasource, LogicalVariable resVar,
              List<Mutable<ILogicalExpression>> varRefsForLoading,
              List<Mutable<ILogicalExpression>> additionalFilteringExpressions, 
ILogicalOperator assign,
              ICompiledDmlStatement stmt) throws AlgebricksException {
@@@ -463,7 -463,7 +462,7 @@@
          return leafOperator;
      }
  
-     protected ILogicalOperator translateUpsert(DatasetDataSource 
targetDatasource, Mutable<ILogicalExpression> varRef,
 -    private ILogicalOperator translateUpsert(DatasetDataSource 
targetDatasource, LogicalVariable resVar,
++    protected ILogicalOperator translateUpsert(DatasetDataSource 
targetDatasource, LogicalVariable resVar,
              List<Mutable<ILogicalExpression>> varRefsForLoading,
              List<Mutable<ILogicalExpression>> additionalFilteringExpressions, 
ILogicalOperator assign,
              List<String> additionalFilteringField, LogicalVariable unnestVar, 
ILogicalOperator topOp,
@@@ -578,7 -582,7 +581,7 @@@
          return processReturningExpression(rootOperator, upsertOp, 
compiledUpsert, resultMetadata);
      }
  
-     protected ILogicalOperator translateInsert(DatasetDataSource 
targetDatasource, Mutable<ILogicalExpression> varRef,
 -    private ILogicalOperator translateInsert(DatasetDataSource 
targetDatasource, LogicalVariable resVar,
++    protected ILogicalOperator translateInsert(DatasetDataSource 
targetDatasource, LogicalVariable resVar,
              List<Mutable<ILogicalExpression>> varRefsForLoading,
              List<Mutable<ILogicalExpression>> additionalFilteringExpressions, 
ILogicalOperator assign,
              ICompiledDmlStatement stmt, IResultMetadata resultMetadata) 
throws AlgebricksException {

Reply via email to