zabetak commented on code in PR #6202:
URL: https://github.com/apache/hive/pull/6202#discussion_r2660711052


##########
ql/src/java/org/apache/hadoop/hive/ql/optimizer/topnkey/TopNKeyProcessor.java:
##########
@@ -111,6 +123,50 @@ public Object process(Node nd, Stack<Node> stack, 
NodeProcessorCtx procCtx,
     return null;
   }
 
+  /**
+   * Returns true if the ReduceSink is only under an ORDER BY + LIMIT plan
+   * and has no GroupBy or Join operators in its upstream ancestry.
+   * This is used to disable TopNKey for pure ORDER BY LIMIT queries where
+   * LIMIT pushdown must take precedence.
+   */
+  public static boolean isOrderByLimitPath(ReduceSinkOperator rs) {

Review Comment:
   I have a feeling that the traversal logic here could be skipped by properly 
setting up the `RuleRegExp` in 
`org.apache.hadoop.hive.ql.parse.TezCompiler#runTopNKeyOptimization`.
   
   Something like:
   ```java
   new RuleRegExp("Top n key optimization", "(GBY%|JOIN%).*RS%")
   ```
   The expression above is not tested but I have the impression that with some 
tuning we can get the desired matching scope.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to