diff --git ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java index bc9254c..fb2cc20 100644 --- ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java +++ ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java @@ -134,6 +134,9 @@ public static int setVariable(String varname, String varvalue) throws Exception hive.setMetaConf(propName, new VariableSubstitution().substitute(ss.getConf(), varvalue)); } else { setConf(varname, varname, varvalue, true); + if (varname.equals(HiveConf.ConfVars.HIVE_SESSION_HISTORY_ENABLED.toString())) { + SessionState.get().updateHistory(Boolean.parseBoolean(varvalue), ss); + } } return 0; } diff --git ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 37b6d6f..245f3ed 100644 --- ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -855,6 +855,25 @@ public HiveHistory getHiveHistory() { } /** + * Update the history if set hive.session.history.enabled + * + * @param historyEnabled + * @param ss + */ + public void updateHistory(boolean historyEnabled, SessionState ss) { + if (historyEnabled) { + // Uses a no-op proxy + if (ss.hiveHist.getHistFileName() == null) { + ss.hiveHist = new HiveHistoryImpl(ss); + } + } else { + if (ss.hiveHist.getHistFileName() != null) { + ss.hiveHist = HiveHistoryProxyHandler.getNoOpHiveHistoryProxy(); + } + } + } + + /** * Create a session ID. Looks like: * $user_$pid@$host_$date * @return the unique string