diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index 5afd4f2..3e201a5 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -64,7 +64,8 @@ public void initialize(HiveConf hiveConf) { // If we are translating Calcite operators into Hive operators, we need // additional postprocessing - if(HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP)) { + if(HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_ENABLED) && + HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP)) { transformations.add(new HiveOpConverterPostProc()); } @@ -149,11 +150,15 @@ public void initialize(HiveConf hiveConf) { if(HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTREDUCEDEDUPLICATION)) { transformations.add(new ReduceSinkDeDuplication()); } - if(!HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP)) { + if(!HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_ENABLED) || + (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_ENABLED) && + !HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP))) { transformations.add(new NonBlockingOpDeDupProc()); } - if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEIDENTITYPROJECTREMOVER) - && !HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP)) { + if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEIDENTITYPROJECTREMOVER) && + (!HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_ENABLED) || + (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_ENABLED) && + !HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP)))) { transformations.add(new IdentityProjectRemover()); } if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVELIMITOPTENABLE)) {