You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2022/08/16 18:26:13 UTC

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

From Vijay Sarathy <vi...@couchbase.com>:

Vijay Sarathy has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )


Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................

[ASTERIXDB-3046][COMP] Support cost based query optimization.

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details:
Cost based query optimization enables the asterixdb optimizer to compute the optimal plan for a query.

Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinEnum.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/StatsUtil.java
M asterixdb/asterix-app/pom.xml
M asterixdb/asterix-app/src/main/resources/cc.conf
M asterixdb/asterix-app/src/main/resources/cc2.conf
M asterixdb/asterix-app/src/main/resources/cc3.conf
A asterixdb/asterix-app/src/main/resources/cc_no_cbo.conf
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
M asterixdb/asterix-app/src/test/resources/cc-compression.conf
M asterixdb/asterix-app/src/test/resources/cc-ssl.conf
M asterixdb/asterix-app/src/test/resources/optimizerts/results/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-6.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-11.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-ternary-inlj/query4.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/collocated.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/denorm-cust-order.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/disjunction-to-join-delete-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter/inverted-btree-search-return-optional-field.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter_on_meta_with_idx_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/leftouterjoin/query-ASTERIXDB-2857.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/indexes_on_dataset_with_meta_05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/with_clause_meta.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-index/btree-index-join/ASTERIXDB-2199.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index-join/non-enforced-composite-key-equi-join/05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q09_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query-issue562_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/skip-index/skip-secondary-btree-index-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1580.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.1.regex
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.2.regex
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/parser/SqlppHint.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/SampleDataSource.java
M asterixdb/asterix-server/src/test/resources/NCServiceExecutionIT/cc.conf
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/JoinProductivityAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/PredicateCardinalityAnnotation.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractDataSourceOperator.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/CardHints.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
106 files changed, 6,656 insertions(+), 140 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/43/17143/1


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 1
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-MessageType: newchange

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Ali Alsuliman <al...@gmail.com>:

Attention is currently required from: Wail Alkowaileet, Vijay Sarathy, Glenn Galvizo.
Ali Alsuliman has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 10:

(29 comments)

File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/42e766b7_833f27e6 
PS10, Line 79: buildFulltextContainsRuleCollection()
just asking the same question as Glenn's for the reason for moving this up.


File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/caaee54f_7902a493 
PS10, Line 92: "cardinality"
we should remove this.


File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/ce50b617_350c7fed 
PS10, Line 364: 
accidentally added?


File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/631b3d6d_b3e46f6f 
PS10, Line 500: 
accidentally added?


File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/910c54fb_3e9c6e75 
PS10, Line 369: joinEnumCode
rename similar to the other one; checkApplicableOnly


File asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.004.query.sqlpp:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/45c6ec11_b95f2ff6 
PS10, Line 26: select data;
revert as there is no change.


File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/9cd650a3_4fd82b94 
PS10, Line 276: public String getCBOMode() {
              :         String cbo = accessor.getString(Option.COMPILER_CBO);
              :         if (!(cbo.equals("on") || cbo.equals("off") || cbo.equals("test")))
              :             return AlgebricksConfig.CBO_DEFAULT; // default value if option is not in ("on", "off", "test")
              :         return cbo;
              :     }
we should follow the existing pattern that just returns the value from the accessor:
return accessor.getString(Option.COMPILER_CBO);

then the caller deals with the value.


File asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/ae93bb70_8ec30462 
PS10, Line 660: Pattern number = Pattern.compile("\\d+\\.\\d+");
              :       Pattern stringNumber = Pattern.compile("\\w+\\s+\\d+\\.\\d+");
              :       Pattern lessThanOnePat = Pattern.compile("0\\.\\d+");
not sure about the need for this, but we should be using this SQLPP parser itself to parse tokens like in ParenthesizedIdentifierList() and parseExpression()


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/3396615a_4740725f 
PS10, Line 3086: SqlppHint.HASH_JOIN_HINT
are we intending to add the hash join hint here? i.e. before a function call?


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/20bdd40b_60268c5e 
PS10, Line 3590: while (hintToken != null) {
               :             annotation = parseExpression
i didn't quite get the intention of this change.


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/5ca884d5_188d2650 
PS10, Line 3643: SqlppHint.HASH_JOIN_HINT
are we intending to add the hash join hint to the BETWEEN operator?


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/98efc4c7_cd042092 
PS10, Line 3736: fetchHint(token, SqlppHint.SINGLE_DATASET_PREDICATE_SELECTIVITY_HINT);
we should add a test case for this (where we also test that only this hint is applicable in LIKE)


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/8853a989_9db7a8f8 
PS10, Line 5408: // make this a while loop
same thing, i didn't quite get this.


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/f039ee36_c4825090 
PS10, Line 42: substituteVarOnce
we should revert this file once we move the logic as in my other comment.


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/64d8418d_65866bae 
PS10, Line 32:     public static final String OP_INPUT_CARDINALITY = "INPUT_CARDINALITY";
             :     public static final String OP_OUTPUT_CARDINALITY = "OUTPUT_CARDINALITY";
             :     public static final String OP_COST_TOTAL = "TOTAL_COST";
             :     public static final String OP_COST_LOCAL = "OP_COST";
             :     public static final String OP_LEFT_EXCHANGE_COST = "LEFT_EXCHANGE_COST";
             :     public static final String OP_RIGHT_EXCHANGE_COST = "RIGHT_EXCHANGE_COST";
after moving EstimatedCostComputationVisitor to asterixdb layer, we can move these to asterixdb layer, as well, to OperatorAnnotation.java


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/828c1cb9_75e58737 
PS10, Line 267: setAnnotation
AbstractFunctionCallExpression is kind of generic, and the implementation here seems to be very specific to a use case. we should move this logic to where we want it; to EnumerateJoinsRule


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/5342f5c7_0b6cbb08 
PS10, Line 85: MutableBoolean changed
it does not feel right to have an external boolean control the logic of this public method, especially being an interface method.
i checked how this method is used. we should just move the logic to EnumerateJoinsRule.


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/cec6a29f_6a11699b 
PS10, Line 69: EstimatedCostComputationVisitor
we should move this to asterixdb layer (cbo package) so that it's with AnnotateOperatorCostCardinalityRule where it's used.


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/c7f53aeb_8a8c95a4 
PS10, Line 129: /*
              :         for (Map.Entry<String, Object> anno : op.getAnnotations().entrySet()) {
remove commented code (you can just roll back the whole file)


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/904d40f2_efdb049a 
PS10, Line 215: equals
you can use == for tags, same thing for the one below it.


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/924a58b1_0dd9bfdf 
PS10, Line 237: 
revert adding extra line


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/a67900fe_7e91d227 
PS10, Line 316: op.getInputs())
> That is not a copy and it still points to the original input list? Is that intended?
it feels like OperatorManipulationUtil.bottomUpCopyOperators() should be used.


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/6c5d74ff_36e9f311 
PS10, Line 527: //ScalarFunctionCallExpression scalarExpr = (ScalarFunctionCallExpression) joinExpr;
remove commented line.


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/1a80a6f3_bd747276 
PS10, Line 529: if (arg.getValue().getExpressionTag().equals(LogicalExpressionTag.FUNCTION_CALL)) {
we can use == for tags comparison:

for (Mutable<ILogicalExpression> argRef : inExpr.getArguments()) {
  ILogicalExpression arg = argRef.getValue();
  if (arg.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) {
    replaceVarWithExpr((AbstractFunctionCallExpression) arg, var, replacementExpr);
  } else if (arg.getExpressionTag() == LogicalExpressionTag.VARIABLE) {
    LogicalVariable v = ((VariableReferenceExpression) arg).getVariableReference();
    if (v.equals(var)) {
      argRef.setValue(replacementExpr.cloneExpression());
    }
  }
}


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/71df383c_45c71688 
PS10, Line 534: // cloning is needed according to Dmitry.
remove comment.


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/4db361a3_b5c4d925 
PS10, Line 55: public static double selectivityForSecondaryIndexSelection = 0.1;
we should move this to a better place. move it to Stats.java for now.
make it uppercase SELECTIVITY_FOR_SECONDARY_INDEX_SELECTION


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/f5470e2b_3df61d34 
PS10, Line 251: // default value if option is not in ("on", "off", "test")
we can remove these comments since the code is clear about it


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/c5e3aeff_c61e3adb 
PS10, Line 258: forceJoinOrderMode.equals("off") || forceJoinOrderMode.equals("old")
              :                 || forceJoinOrderMode.equals("new")
i think we need better names for users to understand the differences/behavior


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/59aba371_686538ec 
PS10, Line 267: queryPlanShapeMode.equals("zigzag") || queryPlanShapeMode.equals("leftdeep")
              :                 || queryPlanShapeMode.equals("rightdeep")
we should have constants for these values. same thing for the other modes.
also, i'm wondering if the values of these modes should be case-sensitive or not. need to look at existing properties.



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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 10
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Attention: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Attention: Glenn Galvizo <gg...@uci.edu>
Gerrit-Comment-Date: Tue, 13 Sep 2022 05:18:27 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Wail Alkowaileet <wa...@gmail.com>
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Vijay Sarathy has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )


Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................

[ASTERIXDB-3046][COMP] Support cost based query optimization.

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details:
Cost based query optimization enables the asterixdb optimizer to compute the optimal plan for a query.

Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinEnum.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/StatsUtil.java
M asterixdb/asterix-app/pom.xml
M asterixdb/asterix-app/src/main/resources/cc.conf
M asterixdb/asterix-app/src/main/resources/cc2.conf
M asterixdb/asterix-app/src/main/resources/cc3.conf
A asterixdb/asterix-app/src/main/resources/cc_no_cbo.conf
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
M asterixdb/asterix-app/src/test/resources/cc-compression.conf
M asterixdb/asterix-app/src/test/resources/cc-ssl.conf
M asterixdb/asterix-app/src/test/resources/optimizerts/results/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-6.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-11.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-ternary-inlj/query4.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/collocated.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/denorm-cust-order.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/disjunction-to-join-delete-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter/inverted-btree-search-return-optional-field.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter_on_meta_with_idx_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/leftouterjoin/query-ASTERIXDB-2857.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/indexes_on_dataset_with_meta_05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/with_clause_meta.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-index/btree-index-join/ASTERIXDB-2199.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index-join/non-enforced-composite-key-equi-join/05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q09_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query-issue562_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/skip-index/skip-secondary-btree-index-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1580.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.1.regex
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.2.regex
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/parser/SqlppHint.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/SampleDataSource.java
M asterixdb/asterix-server/src/test/resources/NCServiceExecutionIT/cc.conf
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/JoinProductivityAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/PredicateCardinalityAnnotation.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractDataSourceOperator.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/CardHints.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
106 files changed, 6,656 insertions(+), 140 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/43/17143/1


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 1
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-MessageType: newchange

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
Anon. E. Moose #1000171 has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 1: Contrib-2

Analytics Compatibility Tests Failed
https://cbjenkins.page.link/T228Yi8AcGVDhwV58 : UNSTABLE


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 1
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Comment-Date: Tue, 16 Aug 2022 20:30:35 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Jenkins <je...@fulliautomatix.ics.uci.edu>:

Jenkins has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 1: Contrib+1

Graphix Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/graphix-compat/215/ : SUCCESS


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 1
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-CC: Anon. E. Moose #1000171
Gerrit-Comment-Date: Tue, 16 Aug 2022 18:44:34 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Ali Alsuliman <al...@gmail.com>:

Attention is currently required from: Vijay Sarathy.
Ali Alsuliman has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 18:

(2 comments)

File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/59a35565_66935e84 
PS1, Line 22: ICost
> Could be comparable (i.e. […]
done by https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17233


File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/ee3c8aca_677e5b5f 
PS1, Line 22: ICost
> Maybe "extends Comparable<ICost>"?
done by https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17233



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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 18
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Comment-Date: Wed, 21 Sep 2022 20:04:31 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Wail Alkowaileet <wa...@gmail.com>
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Ali Alsuliman <al...@gmail.com>:

Attention is currently required from: Vijay Sarathy.
Ali Alsuliman has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 18:

(1 comment)

File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/aec8ae69_f9ddb871 
PS18, Line 105: singleDatasetPreds = new ArrayList<>();
just leaving this comment here for tracking since I don't see it in the previous comments.
"singleDatasetPreds" is not reset anywhere. there will be an issue if the joinEnum object is re-inited for the next join operator since it will be using obsolete data



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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 18
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Comment-Date: Mon, 19 Sep 2022 23:11:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Attention is currently required from: Wail Alkowaileet, Ali Alsuliman, Glenn Galvizo.
Vijay Sarathy has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 12:

(12 comments)

File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/8d8ab65f_0e5d1d52 
PS6, Line 70: private int totalNumberOfJoins;
            :     private DataSourceScanOperator dataSourceOp;
            :     private EmptyTupleSourceOperator emptyTupleSourceOp;
> the way these variables are used suggests that they should be local variables. […]
Done


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/39700012_02f4e710 
PS6, Line 198: containsLeafInputOnly
> what would happen if we encounter an operator that has more than one input like UNION_ALL? this may  […]
Done


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/a2cce926_30328db0 
PS6, Line 239: getJoinOpsAndLeafInputs
> it's safer to make this method return true/false instead of passing a mutable boolean and then havin […]
Done


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/71acff21_1aa8c666 
PS6, Line 356: SqlppHint.HASH_JOIN_HINT.getIdentifier()
> why are we passing the hint identifier (which is "hashjoin")?
Done


File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/4de2095a_c153cb76 
PS10, Line 276: public String getCBOMode() {
              :         String cbo = accessor.getString(Option.COMPILER_CBO);
              :         if (!(cbo.equals("on") || cbo.equals("off") || cbo.equals("test")))
              :             return AlgebricksConfig.CBO_DEFAULT; // default value if option is not in ("on", "off", "test")
              :         return cbo;
              :     }
> we should follow the existing pattern that just returns the value from the accessor: […]
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/57e5a416_a9a69f6d 
PS10, Line 32:     public static final String OP_INPUT_CARDINALITY = "INPUT_CARDINALITY";
             :     public static final String OP_OUTPUT_CARDINALITY = "OUTPUT_CARDINALITY";
             :     public static final String OP_COST_TOTAL = "TOTAL_COST";
             :     public static final String OP_COST_LOCAL = "OP_COST";
             :     public static final String OP_LEFT_EXCHANGE_COST = "LEFT_EXCHANGE_COST";
             :     public static final String OP_RIGHT_EXCHANGE_COST = "RIGHT_EXCHANGE_COST";
> after moving EstimatedCostComputationVisitor to asterixdb layer, we can move these to asterixdb laye […]
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/a892a5af_01627069 
PS6, Line 24: String buildAlias = null;
> i don't see this being used.
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/091f6346_8aa5be1c 
PS10, Line 69: EstimatedCostComputationVisitor
> we should move this to asterixdb layer (cbo package) so that it's with AnnotateOperatorCostCardinali […]
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/2b8b31be_08bc51ab 
PS1, Line 38:     public static final String CBO_DEFAULT = "on";
            :     public static final String FORCE_JOIN_ORDER_DEFAULT = "off"
> could that be true/false instead of "on"/"off". […]
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/c8670973_ab5a47b8 
PS1, Line 248: if (!(cbo.equals("on") || cbo.equals("off") || cbo.equals("test")))
> Make cbo to be a boolean instead to be consistent with other flags. […]
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/50ec7c58_1d4b9f59 
PS10, Line 258: forceJoinOrderMode.equals("off") || forceJoinOrderMode.equals("old")
              :                 || forceJoinOrderMode.equals("new")
> i think we need better names for users to understand the differences/behavior
Removed options "new" and "old" to make it simpler. Now it is a boolean.


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/4226466a_472146b1 
PS10, Line 267: queryPlanShapeMode.equals("zigzag") || queryPlanShapeMode.equals("leftdeep")
              :                 || queryPlanShapeMode.equals("rightdeep")
> we should have constants for these values. same thing for the other modes. […]
Done



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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 12
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Attention: Ali Alsuliman <al...@gmail.com>
Gerrit-Attention: Glenn Galvizo <gg...@uci.edu>
Gerrit-Comment-Date: Wed, 14 Sep 2022 17:54:16 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Wail Alkowaileet <wa...@gmail.com>
Comment-In-Reply-To: Ali Alsuliman <al...@gmail.com>
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Attention is currently required from: Wail Alkowaileet, Ali Alsuliman, Glenn Galvizo.
Vijay Sarathy has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 13:

(6 comments)

File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/6e7da3b9_e613494e 
PS10, Line 364: 
> accidentally added?
Done


File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/5fcefeb3_85990a66 
PS10, Line 500: 
> accidentally added?
Done


File asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.004.query.sqlpp:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/b7b3def8_93608afc 
PS10, Line 26: select data;
> revert as there is no change.
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/79373916_6123577f 
PS10, Line 42: substituteVarOnce
> we should revert this file once we move the logic as in my other comment.
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/8f77d8b6_70e2c271 
PS10, Line 85: MutableBoolean changed
> it does not feel right to have an external boolean control the logic of this public method, especial […]
Done


File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143/comment/ac46b11e_78625fc8 
PS10, Line 316: op.getInputs())
> it feels like OperatorManipulationUtil.bottomUpCopyOperators() should be used.
Done



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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 13
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Attention: Ali Alsuliman <al...@gmail.com>
Gerrit-Attention: Glenn Galvizo <gg...@uci.edu>
Gerrit-Comment-Date: Thu, 15 Sep 2022 00:03:01 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Wail Alkowaileet <wa...@gmail.com>
Comment-In-Reply-To: Ali Alsuliman <al...@gmail.com>
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Attention is currently required from: Vijay Sarathy.
Hello Wail Alkowaileet, Ali Alsuliman, Till Westmann, Jenkins, Anon. E. Moose #1000171, murali4104@gmail.com, Glenn Galvizo, 

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143

to look at the new patch set (#7).

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................

[ASTERIXDB-3046][COMP] Support cost based query optimization.

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details:
Cost based query optimization enables the optimizer to compute
the optimal plan for a query.

Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
---
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-11.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue453-2/query-issue453-2.3.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/disjunction-to-join-delete-3.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/group-by/listify-3.1.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/StatsUtil.java
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-3.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java
M asterixdb/asterix-app/pom.xml
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter/inverted-btree-search-return-optional-field.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q09_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query-issue562_ps.plan
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/SampleDataSource.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.004.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.003.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-index/btree-index-join/ASTERIXDB-2199.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/joins/nlj_partitioning_property_1.plan
A asterixdb/asterix-app/src/main/resources/cc_no_cbo.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/collocated.plan
M asterixdb/asterix-app/src/main/resources/cc3.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query8.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index-join/non-enforced-composite-key-equi-join/05.plan
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/leftouterjoin/query-ASTERIXDB-2857.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/parser/SqlppHint.java
M asterixdb/asterix-app/src/test/resources/optimizerts/results/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/joins/nlj_partitioning_property_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/CardHints.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/indexes_on_dataset_with_meta_05.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1_ps.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/PredicateCardinalityAnnotation.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hints/broadcast_hint_2.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hints/broadcast_hint_3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan
M asterixdb/asterix-app/src/test/resources/cc-ssl.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-ternary-inlj/query4.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.12.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q22.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/skip-index/skip-secondary-btree-index-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q2.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/open-closed/query-issue453-2/query-issue453-2.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinEnum.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.13.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hints/broadcast_hint_1.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/with_clause_meta.plan
M asterixdb/asterix-app/src/main/resources/cc2.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/denorm-cust-order.plan
M asterixdb/asterix-app/src/main/resources/cc.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07_ps.plan
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter_on_meta_with_idx_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3_ps.plan
M asterixdb/asterix-server/src/test/resources/NCServiceExecutionIT/cc.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-7.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.2.regex
M asterixdb/asterix-app/src/test/resources/cc-compression.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query6.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractDataSourceOperator.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1580.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/JoinProductivityAnnotation.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.11.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.1.regex
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query9.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5.plan
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
125 files changed, 7,213 insertions(+), 162 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/43/17143/7
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 7
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Vijay Sarathy <vi...@couchbase.com>
Gerrit-MessageType: newpatchset

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Attention is currently required from: Wail Alkowaileet, Ali Alsuliman, Glenn Galvizo.
Hello Wail Alkowaileet, Ali Alsuliman, Till Westmann, Jenkins, Anon. E. Moose #1000171, murali4104@gmail.com, Glenn Galvizo, 

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143

to look at the new patch set (#10).

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................

[ASTERIXDB-3046][COMP] Support cost based query optimization.

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details:
Cost based query optimization enables the optimizer to compute
the optimal plan for a query.

Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
---
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue453-2/query-issue453-2.3.ast
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-11.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue453-2/query-issue453-2.3.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/disjunction-to-join-delete-3.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/group-by/listify-3.1.plan
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-3.plan
M asterixdb/asterix-app/pom.xml
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter/inverted-btree-search-return-optional-field.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q09_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query-issue562_ps.plan
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/SampleDataSource.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.004.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.003.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-index/btree-index-join/ASTERIXDB-2199.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/joins/nlj_partitioning_property_1.plan
A asterixdb/asterix-app/src/main/resources/cc_no_cbo.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/collocated.plan
M asterixdb/asterix-app/src/main/resources/cc3.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query8.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index-join/non-enforced-composite-key-equi-join/05.plan
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/leftouterjoin/query-ASTERIXDB-2857.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/parser/SqlppHint.java
M asterixdb/asterix-app/src/test/resources/optimizerts/results/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/joins/nlj_partitioning_property_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/CardHints.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/indexes_on_dataset_with_meta_05.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1_ps.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/PredicateCardinalityAnnotation.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hints/broadcast_hint_2.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hints/broadcast_hint_3.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan
M asterixdb/asterix-app/src/test/resources/cc-ssl.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-ternary-inlj/query4.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.12.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q22.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/skip-index/skip-secondary-btree-index-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q2.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/open-closed/query-issue453-2/query-issue453-2.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/PlanNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinCondition.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.13.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/hints/broadcast_hint_1.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/with_clause_meta.plan
M asterixdb/asterix-app/src/main/resources/cc2.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/denorm-cust-order.plan
M asterixdb/asterix-app/src/main/resources/cc.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07_ps.plan
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AnnotateOperatorCostCardinalityRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter_on_meta_with_idx_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3_ps.plan
M asterixdb/asterix-server/src/test/resources/NCServiceExecutionIT/cc.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-7.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.2.regex
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
M asterixdb/asterix-app/src/test/resources/cc-compression.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query6.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractDataSourceOperator.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1580.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/JoinProductivityAnnotation.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.11.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.1.regex
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/array-index/atomic-and-array-queries/query9.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5.plan
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
127 files changed, 7,160 insertions(+), 165 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/43/17143/10
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 10
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Attention: Ali Alsuliman <al...@gmail.com>
Gerrit-Attention: Glenn Galvizo <gg...@uci.edu>
Gerrit-MessageType: newpatchset

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Hello Wail Alkowaileet, Ali Alsuliman, Till Westmann, Jenkins, Anon. E. Moose #1000171, murali4104@gmail.com, Glenn Galvizo, 

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143

to look at the new patch set (#3).

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................

[ASTERIXDB-3046][COMP] Support cost based query optimization.

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details:
Cost based query optimization enables the optimizer to compute
the optimal plan for a query.

Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinEnum.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/StatsUtil.java
M asterixdb/asterix-app/pom.xml
M asterixdb/asterix-app/src/main/resources/cc.conf
M asterixdb/asterix-app/src/main/resources/cc2.conf
M asterixdb/asterix-app/src/main/resources/cc3.conf
A asterixdb/asterix-app/src/main/resources/cc_no_cbo.conf
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
M asterixdb/asterix-app/src/test/resources/cc-compression.conf
M asterixdb/asterix-app/src/test/resources/cc-ssl.conf
M asterixdb/asterix-app/src/test/resources/optimizerts/results/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-6.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-11.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-ternary-inlj/query4.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/collocated.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/denorm-cust-order.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/disjunction-to-join-delete-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter/inverted-btree-search-return-optional-field.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter_on_meta_with_idx_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/leftouterjoin/query-ASTERIXDB-2857.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/indexes_on_dataset_with_meta_05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/with_clause_meta.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-index/btree-index-join/ASTERIXDB-2199.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index-join/non-enforced-composite-key-equi-join/05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q09_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query-issue562_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/skip-index/skip-secondary-btree-index-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1580.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.003.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.004.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue453-2/query-issue453-2.3.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.1.regex
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.2.regex
M asterixdb/asterix-app/src/test/resources/runtimets/results/open-closed/query-issue453-2/query-issue453-2.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/parser/SqlppHint.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/SampleDataSource.java
M asterixdb/asterix-server/src/test/resources/NCServiceExecutionIT/cc.conf
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/JoinProductivityAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/PredicateCardinalityAnnotation.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractDataSourceOperator.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/CardHints.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
110 files changed, 6,653 insertions(+), 163 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/43/17143/3
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 3
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-MessageType: newpatchset

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Hello Wail Alkowaileet, Ali Alsuliman, Till Westmann, Jenkins, Anon. E. Moose #1000171, murali4104@gmail.com, Glenn Galvizo, 

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143

to look at the new patch set (#2).

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................

[ASTERIXDB-3046][COMP] Support cost based query optimization.

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details:
Cost based query optimization enables the asterixdb optimizer to compute the optimal plan for a query.

Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinEnum.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/StatsUtil.java
M asterixdb/asterix-app/pom.xml
M asterixdb/asterix-app/src/main/resources/cc.conf
M asterixdb/asterix-app/src/main/resources/cc2.conf
M asterixdb/asterix-app/src/main/resources/cc3.conf
A asterixdb/asterix-app/src/main/resources/cc_no_cbo.conf
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
M asterixdb/asterix-app/src/test/resources/cc-compression.conf
M asterixdb/asterix-app/src/test/resources/cc-ssl.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/queries/joins/nlj_partitioning_property_1.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/queries/joins/nlj_partitioning_property_2.sqlpp
M asterixdb/asterix-app/src/test/resources/optimizerts/results/ASTERIXDB-2402.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/common-expr-01.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/inner_right_corr.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/nlj_partitioning_property_1.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results/joins/nlj_partitioning_property_2.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/query-ASTERIXDB-159-3.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/spatial_join/st_distance_static_partitioning.plan
M asterixdb/asterix-app/src/test/resources/optimizerts/results/subquery/query-ASTERIXDB-2845.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-6.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-11.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-ternary-inlj/query4.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/collocated.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/denorm-cust-order.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/disjunction-to-join-delete-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter/inverted-btree-search-return-optional-field.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter_on_meta_with_idx_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/leftouterjoin/query-ASTERIXDB-2857.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/indexes_on_dataset_with_meta_05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/with_clause_meta.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-index/btree-index-join/ASTERIXDB-2199.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index-join/non-enforced-composite-key-equi-join/05.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q09_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query-issue562_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/skip-index/skip-secondary-btree-index-3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_1_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_3_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/subquery/in_as_or_5_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1580.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.003.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.004.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/inner_right_corr/inner_right_corr.1.ddl.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/inner_right_corr/inner_right_corr.2.update.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/inner_right_corr/inner_right_corr.3.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/nlj_partitioning_property/nlj_partitioning_property.1.ddl.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/nlj_partitioning_property/nlj_partitioning_property.2.update.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/nlj_partitioning_property/nlj_partitioning_property.3.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/nlj_partitioning_property/nlj_partitioning_property.4.query.sqlpp
A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/join/nlj_partitioning_property/nlj_partitioning_property.5.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue453-2/query-issue453-2.3.query.sqlpp
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
A asterixdb/asterix-app/src/test/resources/runtimets/results/join/inner_right_corr/inner_right_corr.3.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/join/nlj_partitioning_property/nlj_partitioning_property.3.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/join/nlj_partitioning_property/nlj_partitioning_property.4.adm
A asterixdb/asterix-app/src/test/resources/runtimets/results/join/nlj_partitioning_property/nlj_partitioning_property.5.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.1.regex
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.2.regex
M asterixdb/asterix-app/src/test/resources/runtimets/results/open-closed/query-issue453-2/query-issue453-2.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/parser/SqlppHint.java
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/SampleDataSource.java
M asterixdb/asterix-server/src/test/resources/NCServiceExecutionIT/cc.conf
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AbstractFunctionCallExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/JoinProductivityAnnotation.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/PredicateCardinalityAnnotation.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/VariableReferenceExpression.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractDataSourceOperator.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/EstimatedCostComputationVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/NestedLoopJoinPOperator.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/CardHints.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
132 files changed, 7,140 insertions(+), 174 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/43/17143/2
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 2
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-MessageType: newpatchset

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Jenkins <je...@fulliautomatix.ics.uci.edu>:

Jenkins has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 2: Contrib-2

Graphix Compatibility Tests Failed

https://asterix-jenkins.ics.uci.edu/job/graphix-compat/226/ : FAILURE


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 2
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Comment-Date: Tue, 23 Aug 2022 18:22:09 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Jenkins <je...@fulliautomatix.ics.uci.edu>:

Jenkins has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 3: Contrib+1

Graphix Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/graphix-compat/227/ : SUCCESS


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 3
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Comment-Date: Tue, 23 Aug 2022 19:10:25 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
Anon. E. Moose #1000171 has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 1:

Analytics Compatibility Compilation Successful
https://cbjenkins.page.link/ZFtXYV4f9pVfSHGn8 : SUCCESS


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 1
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-CC: Anon. E. Moose #1000171
Gerrit-CC: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Comment-Date: Tue, 16 Aug 2022 18:34:47 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Jenkins <je...@fulliautomatix.ics.uci.edu>:

Jenkins has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 5:

Graphix Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/graphix-compat/229/


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 5
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Comment-Date: Tue, 30 Aug 2022 14:55:51 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Jenkins <je...@fulliautomatix.ics.uci.edu>:

Jenkins has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 5: Contrib+1

Graphix Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/graphix-compat/229/ : SUCCESS


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 5
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Comment-Date: Tue, 30 Aug 2022 15:12:07 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Jenkins <je...@fulliautomatix.ics.uci.edu>:

Jenkins has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 4: Integration-Tests-1

Integration Tests Failed

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/13333/ : UNSTABLE


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 4
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Comment-Date: Mon, 29 Aug 2022 16:21:13 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Ali Alsuliman <al...@gmail.com>:

Attention is currently required from: Wail Alkowaileet, Vijay Sarathy, Glenn Galvizo.
Ali Alsuliman has posted comments on this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143 )

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................


Patch Set 17: Code-Review+2


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

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 17
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Attention: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Attention: Glenn Galvizo <gg...@uci.edu>
Gerrit-Comment-Date: Fri, 16 Sep 2022 04:49:14 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Change in asterixdb[master]: [ASTERIXDB-3046][COMP] Support cost based query optimization.

Posted by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu>.
From Vijay Sarathy <vi...@couchbase.com>:

Attention is currently required from: Wail Alkowaileet, Ali Alsuliman, Vijay Sarathy, Glenn Galvizo.
Hello Wail Alkowaileet, Ali Alsuliman, Till Westmann, Jenkins, Anon. E. Moose #1000171, murali4104@gmail.com, Glenn Galvizo, 

I'd like you to reexamine a change. Please visit

    https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143

to look at the new patch set (#15).

Change subject: [ASTERIXDB-3046][COMP] Support cost based query optimization.
......................................................................

[ASTERIXDB-3046][COMP] Support cost based query optimization.

- user model changes: yes
- storage format changes: no
- interface changes: yes

Details :
Cost based query optimization enables the optimizer to compute
the optimal plan for a query.

Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
---
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results_parser_sqlpp/open-closed/query-issue453-2/query-issue453-2.3.ast
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-11.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceJoinAccessMethodRule.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-closed/query-issue453-2/query-issue453-2.3.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q8.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/DefaultRuleSetFactory.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/group-by/listify-3.1.plan
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/optimizer/OptimizerTest.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q9.plan
M asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-3.plan
M asterixdb/asterix-app/pom.xml
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitorJson.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q09_group_by.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-1.plan
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/SampleDataSource.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/query_issue849.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/ConstantExpression.java
M asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/comparison/incomparable_types/incomparable_types.003.query.sqlpp
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-index/btree-index-join/ASTERIXDB-2199.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-5.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q7.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/joins/nlj_partitioning_property_1.plan
A asterixdb/asterix-app/src/main/resources/cc_no_cbo.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/collocated.plan
M asterixdb/asterix-app/src/main/resources/cc3.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-6.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/nested-open-index/btree-index-join/non-enforced-composite-key-equi-join/05.plan
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/HashJoinExpressionAnnotation.java
M hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonOperatorsRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/leftouterjoin/query-ASTERIXDB-2857.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_less/cluster_state_1_less.1.regexadm
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/parser/SqlppHint.java
M asterixdb/asterix-app/src/test/resources/optimizerts/results/spatial_join/st_distance_static_partitioning.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/joins/nlj_partitioning_property_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q5.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/CardHints.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/meta/indexes_on_dataset_with_meta_05.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1/cluster_state_1.1.regexadm
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/CostMethods.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalExpression.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast_ps.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1591.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_broadcast.plan
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/PredicateCardinalityAnnotation.java
M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICostMethods.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q21.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/q08_group_by.plan
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceSelectAccessMethodRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.9.plan
M asterixdb/asterix-app/src/test/resources/cc-ssl.conf
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/HeuristicOptimizer.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.12.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinNode.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping_ps.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/ch2/ch2_q2.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/open-closed/query-issue453-2/query-issue453-2.1.adm
M asterixdb/asterix-app/src/test/resources/runtimets/results/api/cluster_state_1_full/cluster_state_1_full.1.regexadm
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/PlanNode.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EstimatedCostComputationVisitor.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinCondition.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/CompilerProperties.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.13.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.10.plan
M asterixdb/asterix-app/src/main/resources/cc2.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/denorm-cust-order.plan
M asterixdb/asterix-app/src/main/resources/cc.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07_ps.plan
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/OptimizationConfUtil.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/AnnotateOperatorCostCardinalityRule.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/filter_on_meta_with_idx_2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/disjunctive-predicate/disjunctive-predicate-2.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/open-index-non-enforced/btree-equi-join-non-enforced/btree-equi-join-non-enforced-07.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
M asterixdb/asterix-server/src/test/resources/NCServiceExecutionIT/cc.conf
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-join/hints-indexnl-params/hints-indexnl-params-7.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/OperatorAnnotations.java
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.2.regex
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/EnumerateJoinsRule.java
M asterixdb/asterix-app/src/test/resources/cc-compression.conf
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/split-materialization_ps.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AbstractDataSourceOperator.java
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpcds/query-ASTERIXDB-1580.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/tpch/q12_shipping.plan
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorManipulationUtil.java
M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/btree-index-selection/hints-skip-index/hints-skip-index-12.plan
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
A asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
A hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/JoinProductivityAnnotation.java
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.11.plan
A asterixdb/asterix-app/src/test/resources/optimizerts/results_cbo/aggregate-sql-sugar/distinct_mixed/distinct_mixed.14.plan
M asterixdb/asterix-app/src/test/resources/runtimets/results/misc/metadata_only_01/metadata_only_01.1.regex
M asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/OperatorExpressionVisitor.java
107 files changed, 6,457 insertions(+), 160 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/43/17143/15
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17143
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I848adf6a8fdcfea360655ab649de2fb75a73c814
Gerrit-Change-Number: 17143
Gerrit-PatchSet: 15
Gerrit-Owner: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Reviewer: Ali Alsuliman <al...@gmail.com>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Glenn Galvizo <gg...@uci.edu>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Reviewer: murali4104@gmail.com
Gerrit-Attention: Wail Alkowaileet <wa...@gmail.com>
Gerrit-Attention: Ali Alsuliman <al...@gmail.com>
Gerrit-Attention: Vijay Sarathy <vi...@couchbase.com>
Gerrit-Attention: Glenn Galvizo <gg...@uci.edu>
Gerrit-MessageType: newpatchset