jcamachor commented on a change in pull request #746: HIVE-22074: Slow 
compilation due to IN to OR transformation
URL: https://github.com/apache/hive/pull/746#discussion_r311806267
 
 

 ##########
 File path: 
ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
 ##########
 @@ -1220,16 +1220,26 @@ protected ExprNodeDesc 
getXpathOrFuncExprNodeDesc(ASTNode expr,
             }
             outputOpList.add(nullConst);
           }
+
           if (!ctx.isCBOExecuted()) {
-            ArrayList<ExprNodeDesc> orOperands = 
TypeCheckProcFactoryUtils.rewriteInToOR(children);
-            if (orOperands != null) {
-              if (orOperands.size() == 1) {
-                orOperands.add(new 
ExprNodeConstantDesc(TypeInfoFactory.booleanTypeInfo, false));
+
+            HiveConf conf;
+            try {
+              conf = Hive.get().getConf();
 
 Review comment:
   I think it is better to pass this value from the callers in the context. You 
would not need to change all callers; if value is not passed, rewriting could 
be skipped. I see mainly two advantages of doing this:
   1) if transformation is never happening, we will not be retrieving the conf 
and this value for every IN clause in a query (note that `isCBOExecuted` method 
is misleading, the value returned is `foldExpr` boolean which is `false` 
sometimes even for calls coming from CBO cf. first line in `genFilterRelNode` 
method in `CalcitePlanner`), and
   2) removing the static call to Hive object from within the folding logic.
   I see there are other calls to `Hive.get()` in the class, that information 
should probably be moved to context too.
   These can all be tackled together in a follow-up, but I think since we are 
cleaning up this logic, it would make sense to do it at some point.

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

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

Reply via email to