> On June 21, 2017, 2:03 a.m., Ashutosh Chauhan wrote: > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedScanOptimizer.java > > Line 77 (original), 108 (patched) > > <https://reviews.apache.org/r/59998/diff/1/?file=1747954#file1747954line108> > > > > Shall rename this to SharedWorkOptimizer.
I changed this. Should I change the name of the HiveConf property too since we have not had a release since it was introduced (I think it will help avoiding confusion)? > On June 21, 2017, 2:03 a.m., Ashutosh Chauhan wrote: > > ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out > > Lines 2242-2252 (original), 2242-2246 (patched) > > <https://reviews.apache.org/r/59998/diff/1/?file=1747965#file1747965line2242> > > > > Is this change expected? Filter is removed from both branches. > > Technically, this is correct since ds is partition column, but logic to > > remove filters on partition column is in PartitionConditionRemover. Does > > SharedScan has logic to remove redundant filters in tree? Actually there were no Filter operators before SharedScanOptimizer was introduced. These Filter operators were introduced by the SharedScanOptimizer, as previous version was pushing the filter expressions above the Scan when it was reusing it. Currently, as logic for reutilization has changed, it does not do that anymore, which is a good thing. > On June 21, 2017, 2:03 a.m., Ashutosh Chauhan wrote: > > ql/src/test/results/clientpositive/llap/except_distinct.q.out > > Lines 421-425 (original), 413-417 (patched) > > <https://reviews.apache.org/r/59998/diff/1/?file=1747966#file1747966line421> > > > > Missed opportunity. Could have removed this Gby operator as well. In this case, we have three branches. TS[0]-SEL[1]-GBY[3]-RS[4]-... TS[27]-SEL[28]-GBY[30]-RS[31]-... TS[47]-SEL[48]-GBY[50]-RS[51]-... The first two branches merge up to Select operator, as GBY operators are different (_count(2)_ is considered different to _count(1)_ as we do not do any special reasoning around expressions right now). TS[0]-SEL[1]-GBY[3]-RS[4]-... -GBY[30]-RS[31]-... TS[47]-SEL[48]-GBY[50]-RS[51]-... Then, we try to merge the third branch. However, currently there is a limitation in the implementation where follow-up reutilizations (third branch in this case) cannot go further that the last reused operator (SEL[1] in this case). That is why we end up with following plan: TS[0]-SEL[1]-GBY[3]-RS[4]- -GBY[30]-RS[31]- -GBY[50]-RS[51]- I think I can lift that restriction: I introduced it because multi-branching of the children makes the code more complicated (we would have to follow different branches and end up using a heuristic to choose which one to reuse, e.g., longest path?) and I was already changing almost completely the logic in SharedScanOptimizer. However, I think this is something that can be tackled in a follow-up (in fact, I had already left TODO comments in the code, see _extractSharedOptimizationInfo_ in SharedScanOptimizer). Btw, another idea for a follow-up: rewrite all _count_ on constant to the same expression in a Calcite rule so 1) we can prune more columns, and 2) find more equivalences for reutilization and MVs rewriting. > On June 21, 2017, 2:03 a.m., Ashutosh Chauhan wrote: > > ql/src/test/results/clientpositive/llap/subquery_scalar.q.out > > Lines 824-839 (original), 819-830 (patched) > > <https://reviews.apache.org/r/59998/diff/1/?file=1747979#file1747979line824> > > > > Future improvement: Zip together 2 Gbys with different aggregations in > > a single Gby with projects after it projecting diff aggregates for diff > > branches. I can create a follow-up for this too. However, I think the question that remains is how much further we want to take this rule vs implementing proper Spool operator at the logical level. The complexity of this kind of extension to the existing code is that currently we do not rewrite the operator tree in any way, we just reutilize what is already there; this extension would imply creating/inserting new operators. > On June 21, 2017, 2:03 a.m., Ashutosh Chauhan wrote: > > ql/src/test/results/clientpositive/llap/subquery_scalar.q.out > > Lines 2491-2509 (original), 2482-2495 (patched) > > <https://reviews.apache.org/r/59998/diff/1/?file=1747979#file1747979line2491> > > > > Gbys doing diff aggregations but on same key can be further zipped. Same comment as above. - Jesús ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/59998/#review178443 ----------------------------------------------------------- On June 12, 2017, 10:42 a.m., Jesús Camacho Rodríguez wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/59998/ > ----------------------------------------------------------- > > (Updated June 12, 2017, 10:42 a.m.) > > > Review request for hive and Ashutosh Chauhan. > > > Bugs: HIVE-16867 > https://issues.apache.org/jira/browse/HIVE-16867 > > > Repository: hive-git > > > Description > ------- > > HIVE-16867 > > > Diffs > ----- > > ql/src/java/org/apache/hadoop/hive/ql/exec/OperatorUtils.java > d5006bd52db42e3bb2b650e099d656746834b497 > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java > a9099b868001f4a917b91540fb305db25ccac664 > > ql/src/java/org/apache/hadoop/hive/ql/optimizer/OperatorComparatorFactory.java > 1da91641b989a43b4ce5f6a09e0eabe6487e9157 > ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedScanOptimizer.java > e31119fd081b5989e64e00c6d903c53040dfd8d3 > ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java > a9c1e61ba94574d786c3be912a0b4f9eab20db96 > ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicPruningEventDesc.java > 73bbebd888c508cf7add51287326ba133df9e4d3 > ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java > 04686f7fb98b558d7c7d671341f6e121e7c282c6 > ql/src/test/results/clientpositive/llap/auto_join0.q.out > 6d051ea3f5117c043f79cfc9c641f1a8ace3c87e > ql/src/test/results/clientpositive/llap/auto_join30.q.out > 90c4241f192cfe8f40acc8a1fc0e19fbc846bd97 > ql/src/test/results/clientpositive/llap/auto_sortmerge_join_9.q.out > bdb30d735bc481b11fa6b44563ba74861841071b > ql/src/test/results/clientpositive/llap/bucket_map_join_tez1.q.out > 042c60bf17f4d696e771dfb24d7f7a4fc146f309 > ql/src/test/results/clientpositive/llap/correlationoptimizer2.q.out > cdae4fbfbf107394ccd58e7d9d1d2aeaeaa285ec > ql/src/test/results/clientpositive/llap/correlationoptimizer3.q.out > 3e715463a48a18986a82c4e55d8c8576821b0a05 > ql/src/test/results/clientpositive/llap/correlationoptimizer6.q.out > 82dae9afbb3ae101b7b7cf8214ecfdb08f9d5d34 > ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out > 2875e13bbaccb4e5bfee3e682e5b2c88acaf31a5 > ql/src/test/results/clientpositive/llap/except_distinct.q.out > e4c2941f67858e0171d00032945e4e7d2b7500c9 > ql/src/test/results/clientpositive/llap/explainuser_1.q.out > 8b04bc9261478fee17b82c780a161410a704f4ac > ql/src/test/results/clientpositive/llap/explainuser_2.q.out > e3f70b097f11255276ffc80082c6c8c115a76a1e > ql/src/test/results/clientpositive/llap/intersect_merge.q.out > a31296672023080cc91865fbb86cdbeb891b2167 > ql/src/test/results/clientpositive/llap/limit_pushdown.q.out > 57594e016484ea9020b349339a8a9be63709a6cb > ql/src/test/results/clientpositive/llap/mrr.q.out > 726349c7f16823f1ff54a8575d8d8a27a50f1772 > ql/src/test/results/clientpositive/llap/multiMapJoin2.q.out > b4b0e93c82d73c60bcfe345cea1cb9c8e26ab145 > ql/src/test/results/clientpositive/llap/offset_limit_ppd_optimizer.q.out > c89ca6b5cd9fbb26cbf0b416e4ca71ee38d32a3f > ql/src/test/results/clientpositive/llap/partition_shared_scan.q.out > 34ba87cc9158b2d23ce8d3c6b3defd2b8a4d36f0 > ql/src/test/results/clientpositive/llap/subquery_in.q.out > 1f9c9e447416c153f909ebbe960a8343454dde14 > ql/src/test/results/clientpositive/llap/subquery_multi.q.out > 29516eff82a63a1c551a4173ea1e7ea640bdcef0 > ql/src/test/results/clientpositive/llap/subquery_notin.q.out > b4af91579bb44cd30503d48de72a2f8f36e98501 > ql/src/test/results/clientpositive/llap/subquery_null_agg.q.out > bff27810e9b0999a3794b1fd505bb602236d40ad > ql/src/test/results/clientpositive/llap/subquery_scalar.q.out > e94edff262685a2e2e3c4ab4ba6382b5d2cc186d > ql/src/test/results/clientpositive/llap/subquery_select.q.out > 202980e975b4bdd988df856bc1e533990e5c664b > ql/src/test/results/clientpositive/llap/subquery_views.q.out > 1a21a02a309d7fc931513d2c89f0aee3bc8c0fc6 > ql/src/test/results/clientpositive/llap/unionDistinct_1.q.out > b4b601993b6eddbe3a62a917267e214a1c09ceef > ql/src/test/results/clientpositive/llap/union_top_level.q.out > 2fac8ccf0c8f0c1117874c502c2970d48060e476 > ql/src/test/results/clientpositive/llap/vector_groupby_grouping_sets4.q.out > e1ad06c7de5d4fe729ba56ea89be1a55c6b4d487 > ql/src/test/results/clientpositive/llap/vector_join30.q.out > ec767507003f09d93f8491f454abf2351bd4226b > > ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out > d9fc6b5f5834a041d1f19495234c30948aca2751 > ql/src/test/results/clientpositive/perf/query1.q.out > da4a65c86286555f63b25b8e63117d1df5430bc4 > ql/src/test/results/clientpositive/perf/query10.q.out > 9b6621c1aa03728ea2736474d23bf0b89e42d8f6 > ql/src/test/results/clientpositive/perf/query14.q.out > 048a17f92f67c4ca78ab1fcfcdbc4572d784e39a > ql/src/test/results/clientpositive/perf/query16.q.out > a7f93f9ec28f38675429429c1668ae7a09b0e5c0 > ql/src/test/results/clientpositive/perf/query2.q.out > 50d7f7bcfacc81cdc5e3d7485d9ea2c5b5bf1d52 > ql/src/test/results/clientpositive/perf/query23.q.out > 1fd8cb4f259a12e4b805843e4808888575b055bb > ql/src/test/results/clientpositive/perf/query24.q.out > 2aa0c1929879f6d95b845477b8eb40a227e2e21b > ql/src/test/results/clientpositive/perf/query30.q.out > a86f11d92226e36da0a306b638d504d575aca9a3 > ql/src/test/results/clientpositive/perf/query31.q.out > b3a74f3cae6ef0c9c8465c02ce0b9de673f27cf6 > ql/src/test/results/clientpositive/perf/query32.q.out > 66b848564e55d64c10771e2fb1e835b0c6e453b8 > ql/src/test/results/clientpositive/perf/query33.q.out > c1a5fa28edb5ff94339d43d886693a486d60df31 > ql/src/test/results/clientpositive/perf/query35.q.out > b286a07571e767ddb2e968f58cd7027de063ddf2 > ql/src/test/results/clientpositive/perf/query38.q.out > ae9ada5c0eee11040333d1f2140e0b004cb82c35 > ql/src/test/results/clientpositive/perf/query39.q.out > cf139f285da4b5eb89ffa898e79d9ac614315ae6 > ql/src/test/results/clientpositive/perf/query4.q.out > 1b2048649a8de385ff14cd83df6e9a612c93ab2b > ql/src/test/results/clientpositive/perf/query44.q.out > 566548089c4c7ea54f5631fb97a3497dc7653573 > ql/src/test/results/clientpositive/perf/query46.q.out > 680670329551ddb98fe9c53a3aa9b7ae9501fcd6 > ql/src/test/results/clientpositive/perf/query47.q.out > d5e192259b3761f4c2561d356b9942324facf0d8 > ql/src/test/results/clientpositive/perf/query49.q.out > 8b8ad8b5c27cf7bf7a03ca0bdac80025078a7cce > ql/src/test/results/clientpositive/perf/query5.q.out > a3f2d58fecbe701a744c5b1fbeeaf03b54d403b8 > ql/src/test/results/clientpositive/perf/query51.q.out > 0ce3e9f6dbb1c2b03c9cee7a5d689766cb87e966 > ql/src/test/results/clientpositive/perf/query54.q.out > 3cbcbe33f9cc2ab7e6dd90bf1a3692aeb5e2c6ab > ql/src/test/results/clientpositive/perf/query56.q.out > 4ec7201fa7ca1530dcedb23d5ecb87579c0f6b98 > ql/src/test/results/clientpositive/perf/query57.q.out > 6c237bfd0b50e549d2492d7a06ea9e3ae81c1179 > ql/src/test/results/clientpositive/perf/query58.q.out > acdfc077183683e070067dcccd59b38ba94e737b > ql/src/test/results/clientpositive/perf/query59.q.out > b570b96376b1ec6c97c2ce82c459472e435716f3 > ql/src/test/results/clientpositive/perf/query60.q.out > 12d8cdd9b40747e1da280309452e81d15fcde471 > ql/src/test/results/clientpositive/perf/query61.q.out > 683833265b50c0463aa4d2f8ba6ff0ea2763c7fe > ql/src/test/results/clientpositive/perf/query64.q.out > f24b14d4408e4412b4161626523bc278ed1367d5 > ql/src/test/results/clientpositive/perf/query65.q.out > b2035c2a98a936fd6bdf94c472a41bd54515c685 > ql/src/test/results/clientpositive/perf/query66.q.out > 2c748151c96b41755c3e02422c3a7166cb00b47d > ql/src/test/results/clientpositive/perf/query68.q.out > bd9b5ecd975e0fe4694f0b5555b5b39ac5a9dd1d > ql/src/test/results/clientpositive/perf/query69.q.out > a55c36887da6c1e8d1816acdeb4a82ffdabd7e3d > ql/src/test/results/clientpositive/perf/query70.q.out > ee1fe86ff35bfb00a7a1f992fff954227215bb04 > ql/src/test/results/clientpositive/perf/query75.q.out > d399567ab9cc7cb436c7be5cff70f861f2303092 > ql/src/test/results/clientpositive/perf/query76.q.out > dcd5004166e9b74a1b6371af70b12e2e13131832 > ql/src/test/results/clientpositive/perf/query77.q.out > d46ba6b13c28733073b9af1d9170787b77151f16 > ql/src/test/results/clientpositive/perf/query78.q.out > b49103f1e80dd25eae23a7c9eeef724c5a49e5ee > ql/src/test/results/clientpositive/perf/query80.q.out > 3cf41f3fed326fbe91618aacf5a7ba1f9b44248d > ql/src/test/results/clientpositive/perf/query81.q.out > abeb57759ce66fb3f935b9accb43861d968226a9 > ql/src/test/results/clientpositive/perf/query83.q.out > 396c423c3180dd1d791f4f55bc61e7f2299486a1 > ql/src/test/results/clientpositive/perf/query85.q.out > 86b961b1cd4a1fdad7a0eed788089190d8e60556 > ql/src/test/results/clientpositive/perf/query87.q.out > 58a33d9e67c1d841c8eab67c79cd348afeaf4f24 > ql/src/test/results/clientpositive/perf/query88.q.out > 18d0a774ca80c4ac97490539170eaaec1c3c72ac > ql/src/test/results/clientpositive/perf/query90.q.out > b3468ecce54a132d06fd55555ef0ec4b0ca54293 > ql/src/test/results/clientpositive/perf/query92.q.out > ec4fbb9a5a0c7445f6ad4b6b77aadc8714be5e5c > ql/src/test/results/clientpositive/perf/query94.q.out > c5fc9e7f000501c6e839a216761119faae5f5e72 > ql/src/test/results/clientpositive/perf/query95.q.out > 332bef83c5914e09d0d3d520caf43d0d6bff0ffd > ql/src/test/results/clientpositive/perf/query97.q.out > 2d5129a9015df0450aefdb4a30d688bcb3bef950 > ql/src/test/results/clientpositive/tez/explainanalyze_2.q.out > f6844c4a38bf1f7df457e51af5eb54cfde82bbb9 > > > Diff: https://reviews.apache.org/r/59998/diff/1/ > > > Testing > ------- > > > Thanks, > > Jesús Camacho Rodríguez > >