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 {
