> On March 25, 2015, 8:51 p.m., John Pullokkaran wrote: > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveDefaultCostModel.java, > > line 42 > > <https://reviews.apache.org/r/32370/diff/1/?file=902177#file902177line42> > > > > How about modifying this t0: > > 1. Get Join Algorithms > > 2. Walk through Join Algorithm > > a. Get Cost for Join > > b. Find cheapest > > > > This way algorithm walking and finding cost would be generic.
John, I have been refactoring the code to do it how you proposed. Actually, I am not convinced about the result; at the end it seems more difficult to extend the hierarchy in case a new cost model is added, plus null values need to be given to some parameters needed to decide which algorithms are available (e.g. maxMemory). Another idea would be that HiveOnTezCostModel extends HiveDefaultCostModel instead of implementing HiveCostModel directly; I have done this and it looks clean. - Jesús ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/32370/#review77792 ----------------------------------------------------------- On March 21, 2015, 5:49 p.m., Jesús Camacho Rodríguez wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/32370/ > ----------------------------------------------------------- > > (Updated March 21, 2015, 5:49 p.m.) > > > Review request for hive and John Pullokkaran. > > > Bugs: HIVE-10040 > https://issues.apache.org/jira/browse/HIVE-10040 > > > Repository: hive-git > > > Description > ------- > > CBO (Calcite Return Path): Pluggable cost modules [CBO branch] > > > Diffs > ----- > > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveDefaultRelMetadataProvider.java > 977313a5a632329fc963daf7ff276ccdd59ce7c5 > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveCost.java > 41604cd0af68e7f90296fa271c42debc5aaf743a > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveCostModel.java > PRE-CREATION > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveDefaultCostModel.java > PRE-CREATION > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveOnTezCostModel.java > PRE-CREATION > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveRelMdCost.java > PRE-CREATION > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveAggregate.java > 9a8a5da81b92c7c1f33d1af8072b1fb94e237290 > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveFilter.java > 3e45a3fbed3265b126a3ff9b6ffe44bee24453ef > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveJoin.java > e2b010b641d48ea1bf04750ddf5eb24fb3a7fcbe > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveLimit.java > 5fc64f3e8c97fc8988bc35be39dbabf78dd7de24 > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveProject.java > 6c215c96190f0fcebe063b15c2763c49ebf1faaf > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveTableScan.java > c53d6ae80fe9c8111f609bfebd8530eca67d27b7 > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdCollation.java > 4984683c3c8c6c0378a22e21fd6d961f3901f25c > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdDistribution.java > f846dd19899af51194f3407ef913fcb9bcc24977 > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdRowCount.java > dabbe280278dc80f00f0240a0c615fe6c7b8533a > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/stats/HiveRelMdUniqueKeys.java > 95515b23e409d73d5c61e107931727add3f992a6 > > Diff: https://reviews.apache.org/r/32370/diff/ > > > Testing > ------- > > > Thanks, > > Jesús Camacho Rodríguez > >