> On Dec. 7, 2019, 3:03 a.m., Jesús Camacho Rodríguez wrote:
> > ql/src/java/org/apache/hadoop/hive/ql/optimizer/TopNKeyProcessor.java
> > Lines 93 (patched)
> > <https://reviews.apache.org/r/71820/diff/6/?file=2181560#file2181560line116>
> >
> >     _replaceChild_?

OperatorFactory.getAndMakeChild adds the newly created operator to parent 
operator's children operators. At this point we have two children the original 
children and the newly created TNK op.


> On Dec. 7, 2019, 3:03 a.m., Jesús Camacho Rodríguez wrote:
> > ql/src/java/org/apache/hadoop/hive/ql/optimizer/TopNKeyProcessor.java
> > Lines 95 (patched)
> > <https://reviews.apache.org/r/71820/diff/6/?file=2181560#file2181560line118>
> >
> >     _replaceParent_?

I think calling `child.replaceParent(parents.get(0), newOperator)` has a risk 
of ArrayIndexOutOfBoundsException. It should not happen but I added 
```
    child.getParentOperators().clear();
    child.getParentOperators().add(newOperator);
```
instead.


> On Dec. 7, 2019, 3:03 a.m., Jesús Camacho Rodríguez wrote:
> > ql/src/java/org/apache/hadoop/hive/ql/optimizer/TopNKeyPushdownProcessor.java
> > Lines 18 (patched)
> > <https://reviews.apache.org/r/71820/diff/6/?file=2181561#file2181561line18>
> >
> >     Let's move all these classes (TopNKeyPushdownProcessor, 
> > TopNKeyProcessor, CommonKeyPrefix, etc.) into a new package 
> > _org.apache.hadoop.hive.ql.optimizer.topnkey_. Thoughts?

It makes sense. And we can always change this package in the future if needed.


> On Dec. 7, 2019, 3:03 a.m., Jesús Camacho Rodríguez wrote:
> > ql/src/java/org/apache/hadoop/hive/ql/optimizer/TopNKeyPushdownProcessor.java
> > Lines 105 (patched)
> > <https://reviews.apache.org/r/71820/diff/6/?file=2181561#file2181561line105>
> >
> >     It seems the logic in this method cannot throw a Semantic Exception?

It calls `moveDown` and `pushdown`. Those ones can throw `SemanticException` 
because they call `Operator.removeChildAndAdoptItsChildren(topNKey)`


> On Dec. 7, 2019, 3:03 a.m., Jesús Camacho Rodríguez wrote:
> > ql/src/java/org/apache/hadoop/hive/ql/optimizer/TopNKeyPushdownProcessor.java
> > Lines 278 (patched)
> > <https://reviews.apache.org/r/71820/diff/6/?file=2181561#file2181561line278>
> >
> >     Should this method be moved to _CommonKeyPrefix_ too?

This is not a factory method of `CommonKeyPrefix`. It used when pushing through 
LOJ. I beleive it will be used when pushing through ROJ and FOJ so I would like 
to refactor this in a follow-up patch which implements those scenarios.
Anyway I removed `static` because it is used only in this class.


- Krisztian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/71820/#review218963
-----------------------------------------------------------


On Dec. 9, 2019, 10:21 a.m., Krisztian Kasa wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/71820/
> -----------------------------------------------------------
> 
> (Updated Dec. 9, 2019, 10:21 a.m.)
> 
> 
> Review request for hive, Jesús Camacho Rodríguez and Zoltan Haindrich.
> 
> 
> Bugs: HIVE-20150
>     https://issues.apache.org/jira/browse/HIVE-20150
> 
> 
> Repository: hive-git
> 
> 
> Description
> -------
> 
> TopNKey pushdown
> ================
> 1. Apply patch: 
> https://issues.apache.org/jira/secure/attachment/12941630/HIVE-20150.11.patch
> 2. TopNKey introduction depends only from Reduce Sink with topn property >= 0
> 3. Implement TopNKey operator pushdown through: projection, group by, redeuce 
> sink, left outer join, other topnkey
> 4. Add sort order and null sort order direction check when determining if the 
> topnkey op can be pushed
> 5. Implement handling cases when topnkey op and the parent op has a common 
> key prefix only.
> 6. turn off topnkey optimization by default
> 
> 
> Diffs
> -----
> 
>   common/src/java/org/apache/hadoop/hive/conf/HiveConf.java e7724f9084 
>   data/conf/perf-reg/tez/hive-site.xml ab945f5f95 
>   ql/src/java/org/apache/hadoop/hive/ql/optimizer/TopNKeyProcessor.java 
> 0d6cf3c755 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/topnkey/CommonKeyPrefix.java 
> PRE-CREATION 
>   
> ql/src/java/org/apache/hadoop/hive/ql/optimizer/topnkey/TopNKeyPushdownProcessor.java
>  PRE-CREATION 
>   ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java bf58bd8bb8 
>   
> ql/src/test/org/apache/hadoop/hive/ql/optimizer/topnkey/TestCommonKeyPrefix.java
>  PRE-CREATION 
>   ql/src/test/queries/clientpositive/topnkey.q 057b6a45ba 
>   ql/src/test/queries/clientpositive/vector_topnkey.q 85c5880cd6 
>   ql/src/test/results/clientpositive/llap/bucket_groupby.q.out 0c051c926b 
>   ql/src/test/results/clientpositive/llap/check_constraint.q.out 9f2c9a1cd0 
>   ql/src/test/results/clientpositive/llap/constraints_optimization.q.out 
> b6d210becf 
>   ql/src/test/results/clientpositive/llap/enforce_constraint_notnull.q.out 
> 9343e078b7 
>   ql/src/test/results/clientpositive/llap/explainuser_1.q.out 283a665a20 
>   ql/src/test/results/clientpositive/llap/explainuser_2.q.out 0219af8833 
>   ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out 
> 545cce75a9 
>   ql/src/test/results/clientpositive/llap/filter_union.q.out 0df77762a0 
>   ql/src/test/results/clientpositive/llap/limit_pushdown.q.out 3fdd77d802 
>   ql/src/test/results/clientpositive/llap/limit_pushdown3.q.out efa8c38d7c 
>   ql/src/test/results/clientpositive/llap/llap_decimal64_reader.q.out 
> ffe5f6fb22 
>   ql/src/test/results/clientpositive/llap/offset_limit.q.out 23f2de46e5 
>   ql/src/test/results/clientpositive/llap/offset_limit_ppd_optimizer.q.out 
> 4ecb7bc46d 
>   ql/src/test/results/clientpositive/llap/orc_struct_type_vectorization.q.out 
> 0eac389eb7 
>   
> ql/src/test/results/clientpositive/llap/parquet_complex_types_vectorization.q.out
>  4362fb6f2e 
>   
> ql/src/test/results/clientpositive/llap/parquet_map_type_vectorization.q.out 
> 24468c9a1b 
>   
> ql/src/test/results/clientpositive/llap/parquet_struct_type_vectorization.q.out
>  45890a1890 
>   ql/src/test/results/clientpositive/llap/semijoin_reddedup.q.out 0e9723b8f3 
>   ql/src/test/results/clientpositive/llap/subquery_ALL.q.out d910c1a79d 
>   ql/src/test/results/clientpositive/llap/subquery_ANY.q.out 91472d631e 
>   ql/src/test/results/clientpositive/llap/topnkey.q.out 1e77587f82 
>   ql/src/test/results/clientpositive/llap/vector_cast_constant.q.out 
> cc2dc47280 
>   ql/src/test/results/clientpositive/llap/vector_char_2.q.out f7e76e5a8b 
>   
> ql/src/test/results/clientpositive/llap/vector_groupby_grouping_sets_limit.q.out
>  6fd15e7101 
>   ql/src/test/results/clientpositive/llap/vector_groupby_reduce.q.out 
> d6325982e3 
>   ql/src/test/results/clientpositive/llap/vector_mr_diff_schema_alias.q.out 
> 4d417b9c3d 
>   ql/src/test/results/clientpositive/llap/vector_reduce_groupby_decimal.q.out 
> 97a211cfc6 
>   ql/src/test/results/clientpositive/llap/vector_string_concat.q.out 
> a8019be7aa 
>   ql/src/test/results/clientpositive/llap/vector_topnkey.q.out c140bdfd37 
>   ql/src/test/results/clientpositive/llap/vectorization_limit.q.out 
> 7326adf522 
>   ql/src/test/results/clientpositive/perf/tez/cbo_query14.q.out e9308cd709 
>   ql/src/test/results/clientpositive/perf/tez/cbo_query77.q.out 02caf99f7d 
>   ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query14.q.out 
> 43e1b2b5c2 
>   ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query77.q.out 
> 2f75361df1 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query10.q.out 
> bb3b1b6660 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query14.q.out 
> 228b20a8d7 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query15.q.out 
> 5268ed3ecf 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query17.q.out 
> d96222d9e1 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query25.q.out 
> adabb76e04 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query26.q.out 
> 824bbe6769 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query27.q.out 
> abbd02d6c9 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query29.q.out 
> c308771dfb 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query35.q.out 
> 23b3399123 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query37.q.out 
> 187ad5c5b5 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query40.q.out 
> 070b5cb1f5 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query43.q.out 
> b5a6c746d1 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query45.q.out 
> 3f5dbf4beb 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query49.q.out 
> b384aea779 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query5.q.out 
> d3f79820f2 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query50.q.out 
> 8c9754967f 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query60.q.out 
> 06a5689938 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query66.q.out 
> be612609cf 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query69.q.out 
> d7469ae5a9 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query7.q.out 
> b2eccdbe90 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query76.q.out 
> ce4f7cb061 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query77.q.out 
> 95ab61bed2 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query8.q.out 
> 170bccf406 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query80.q.out 
> b18f89373c 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query82.q.out 
> 8dd6ae9f0f 
>   ql/src/test/results/clientpositive/perf/tez/constraints/query99.q.out 
> c77a73f4d5 
>   ql/src/test/results/clientpositive/perf/tez/query10.q.out b346a5c5fb 
>   ql/src/test/results/clientpositive/perf/tez/query14.q.out 069fad2b4a 
>   ql/src/test/results/clientpositive/perf/tez/query15.q.out 3670a718b3 
>   ql/src/test/results/clientpositive/perf/tez/query17.q.out df70fbc46e 
>   ql/src/test/results/clientpositive/perf/tez/query25.q.out d006795c79 
>   ql/src/test/results/clientpositive/perf/tez/query26.q.out a1bf3b099b 
>   ql/src/test/results/clientpositive/perf/tez/query27.q.out 6f49de2344 
>   ql/src/test/results/clientpositive/perf/tez/query29.q.out 5066893829 
>   ql/src/test/results/clientpositive/perf/tez/query35.q.out 265c51bb72 
>   ql/src/test/results/clientpositive/perf/tez/query37.q.out 2724fd44dc 
>   ql/src/test/results/clientpositive/perf/tez/query40.q.out 4b65c82e00 
>   ql/src/test/results/clientpositive/perf/tez/query43.q.out eb19d41926 
>   ql/src/test/results/clientpositive/perf/tez/query45.q.out 4538a6540d 
>   ql/src/test/results/clientpositive/perf/tez/query49.q.out 9c34eccceb 
>   ql/src/test/results/clientpositive/perf/tez/query5.q.out 38fba27a8e 
>   ql/src/test/results/clientpositive/perf/tez/query50.q.out 6e34831de6 
>   ql/src/test/results/clientpositive/perf/tez/query60.q.out e77c89ba69 
>   ql/src/test/results/clientpositive/perf/tez/query66.q.out 7ddcc21f92 
>   ql/src/test/results/clientpositive/perf/tez/query69.q.out d11b5494e0 
>   ql/src/test/results/clientpositive/perf/tez/query7.q.out c17ec8aeb9 
>   ql/src/test/results/clientpositive/perf/tez/query76.q.out c0d60e88cc 
>   ql/src/test/results/clientpositive/perf/tez/query77.q.out ab2b3dc570 
>   ql/src/test/results/clientpositive/perf/tez/query8.q.out 0af8fdf3df 
>   ql/src/test/results/clientpositive/perf/tez/query80.q.out 47844158fa 
>   ql/src/test/results/clientpositive/perf/tez/query82.q.out c7721acffe 
>   ql/src/test/results/clientpositive/perf/tez/query99.q.out c01122f435 
>   ql/src/test/results/clientpositive/tez/topnkey.q.out cf2ecf7133 
>   ql/src/test/results/clientpositive/tez/vector_topnkey.q.out d179013e28 
>   ql/src/test/results/clientpositive/topnkey.q.out cecbe89b1c 
> 
> 
> Diff: https://reviews.apache.org/r/71820/diff/7/
> 
> 
> Testing
> -------
> 
> Run q tests using TestMiniLlapLocalCliDriver
> topnkey.q
> vector_topnkey.q
> 
> 
> Thanks,
> 
> Krisztian Kasa
> 
>

Reply via email to