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..77e4a17 100644 --- ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java +++ ql/src/java/org/apache/hadoop/hive/ql/processors/SetProcessor.java @@ -125,6 +125,9 @@ public static int setVariable(String varname, String varvalue) throws Exception } else if (varname.startsWith(HIVECONF_PREFIX)){ String propName = varname.substring(HIVECONF_PREFIX.length()); setConf(varname, propName, varvalue, false); + if(varname.equals(HiveConf.ConfVars.HIVE_SESSION_HISTORY_ENABLED)){ + SessionState.get().updateHistory(Boolean.getBoolean(varvalue), ss); + } } else if (varname.startsWith(HIVEVAR_PREFIX)) { String propName = varname.substring(HIVEVAR_PREFIX.length()); ss.getHiveVariables().put(propName, new VariableSubstitution().substitute(ss.getConf(),varvalue)); 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 8db78e5..d0cf5ea 100644 --- ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -1614,6 +1614,19 @@ public void setupQueryCurrentTimestamp() { public Timestamp getQueryCurrentTimestamp() { return queryCurrentTimestamp; } + + 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(); + } + } + } } class ResourceMaps {