>From Vijay Sarathy <vijay.sara...@couchbase.com>: Hello Till Westmann, Ali Alsuliman, Jenkins, Anon. E. Moose #1000171,
I'd like you to reexamine a change. Please visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604 to look at the new patch set (#45). Change subject: [ASTERIXDB-3046][COMP] Changes to support cost based query optimization in Asterix DB. ...................................................................... [ASTERIXDB-3046][COMP] Changes to support cost based query optimization in Asterix DB. - user model changes: no - storage format changes: no - interface changes: no Details: Cost based query optimization enables the asterixdb optimizer to compute the optimal plan for a query. Change-Id: I8d5fe4947df486d054fdf0f178fccf0c95eacfb6 --- 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,613 insertions(+), 136 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/04/15604/45 -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604 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: I8d5fe4947df486d054fdf0f178fccf0c95eacfb6 Gerrit-Change-Number: 15604 Gerrit-PatchSet: 45 Gerrit-Owner: Vijay Sarathy <vijay.sara...@couchbase.com> Gerrit-Reviewer: Ali Alsuliman <ali.al.solai...@gmail.com> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Gerrit-Reviewer: Till Westmann <ti...@apache.org> Gerrit-MessageType: newpatchset