>From Wail Alkowaileet <wael....@gmail.com>:

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

Change subject: [ASTERIXDB-3046][COMP] Changes to support cost based query 
optimization in Asterix DB.
......................................................................


Patch Set 45:

(18 comments)

First pass

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java@93
PS45, Line 93: cardinality
Probably should be declared as a constant -- similar to 
"COMPILER_FORCEJOINORDER_KEY"


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java@22
PS45, Line 22: Cost
Could be comparable (i.e., extending Comparable)


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/Cost.java@24
PS45, Line 24: cost
It seems "cost" could be final


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/cost/ICost.java@22
PS45, Line 22: ICost
Maybe "extends Comparable<ICost>"?


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java@86
PS45, Line 86:         /*
             :         MetadataProvider metadataProvider = (MetadataProvider) 
context.getMetadataProvider();
             :         ICcApplicationContext ccAppContext = 
metadataProvider.getApplicationContext();
             :         CompilerProperties compilerProperties = 
ccAppContext.getCompilerProperties();
             :         return compilerProperties.isCBOEnabled();
             :         *
remove


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java@127
PS45, Line 127: OnlyOneAssign
"onlyOneAssign"


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java@128
PS45, Line 128: equals
== could be used instead of equals()


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java@134
PS45, Line 134: equals
== could be used instead of equals()


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java@304
PS45, Line 304: equals
==


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/EnumerateJoinsRule.java@314
PS45, Line 314: System.out.println("---------------------------- " + text);
              :         pp.reset();
              :         pp.printOperator(op, true);
              :         System.out.println(pp);
              :         System.out.println("---------------------------- ");
Should use Logger instead of System.out

There's a plan printer for each fired rule. Is this necessary?


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinCondition.java@20
PS45, Line 20: util
Let's have EnumerateJoinsRule, JoinCondition, JoinNode, JoinEnum, PlanNode, and 
StatsUtil under a new package called "cbo". I.e., the package name would be 
"package org.apache.asterix.optimizer.rule.cbo"


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java@247
PS45, Line 247: IntroduceJoinAccessMethodRule
I'm not sure about creating/including a rule here at this stage? Ali and Glenn 
probably have a better take on this.


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/JoinNode.java@388
PS45, Line 388: tmp
Same here for creating/including a rule here


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java
 
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java:

https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/util/PlanNode.java@31
PS45, Line 31: joinEnum
This won't be thread-safe. Is that intended?


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java
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/+/15604/45/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java@38
PS45, Line 38: on
could that be true/false instead of "on"/"off". To be consistent with other 
flags


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/config/AlgebricksConfig.java@39
PS45, Line 39: off
same as above


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
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/+/15604/45/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java@248
PS45, Line 248: test
Make cbo to be a boolean instead to be consistent with other flags. The "test" 
mode could have its own flag. I believe/think that the "test" mode should not 
be exposed to end-users. Thus, having it as a different flag could allow us to 
prevent the user from setting CBO ont the test mode.


https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15604/45/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java@304
PS45, Line 304:     private void setString(String property, String value) {
              :         properties.setProperty(property, value);
              :     }
              :
              :     private String getString(String property, String 
defaultValue) {
              :         String value = properties.getProperty(property);
              :         return value == null ? defaultValue : value;
              :     }
This shouldn't be needed if we use true/false



--
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: Glenn Galvizo <ggalv...@uci.edu>
Gerrit-Reviewer: Ian Maxon <ima...@uci.edu>
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Wail Alkowaileet <wael....@gmail.com>
Gerrit-Reviewer: murali4...@gmail.com
Gerrit-CC: Till Westmann <t...@couchbase.com>
Gerrit-Comment-Date: Tue, 09 Aug 2022 17:57:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Reply via email to