diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java index b6fe77c..2bcb56d 100644 --- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java +++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java @@ -68,6 +68,7 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.CommandNeedRetryException; import org.apache.hadoop.hive.ql.Driver; +import org.apache.hadoop.hive.ql.QueryPlan; import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper; import org.apache.hadoop.hive.ql.exec.tez.TezJobExecHelper; @@ -120,6 +121,8 @@ public int processCmd(String cmd) { ss.updateThreadName(); + conf.set(HiveConf.ConfVars.HIVEQUERYID.varname, QueryPlan.makeQueryId()); + // Flush the print stream, so it doesn't include output from the last command ss.err.flush(); String cmd_trimmed = cmd.trim(); diff --git a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java index 4b23385..4d763d2 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java @@ -27,6 +27,7 @@ import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; +import static org.mockito.Matchers.*; import java.util.HashMap; import java.util.Map; @@ -68,8 +69,8 @@ protected synchronized void release(boolean userAccess) { Mockito.when(operation.getHandle()).thenReturn(opHandle); Map confOverlay = new HashMap(); String hql = "drop table if exists table_not_exists"; - Mockito.when(operationManager.newExecuteStatementOperation(session, hql, confOverlay, - true)).thenReturn(operation); + Mockito.when(operationManager.newExecuteStatementOperation(same(session), eq(hql), + (Map)Mockito.any(), eq(true))).thenReturn(operation); try { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java index 7327a42..d7e4ac7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java @@ -403,13 +403,7 @@ public int compile(String command, boolean resetTaskIds) { } saveSession(queryState); - // Generate new query id if it's not set for CLI case. If it's session based, - // query id is passed in from the client or initialized when the session starts. String queryId = conf.getVar(HiveConf.ConfVars.HIVEQUERYID); - if (queryId == null || queryId.isEmpty()) { - queryId = QueryPlan.makeQueryId(); - conf.setVar(HiveConf.ConfVars.HIVEQUERYID, queryId); - } //save some info for webUI for use after plan is freed this.queryDisplay.setQueryStr(queryStr); diff --git a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java index 8baecdf..80a1844 100644 --- a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java +++ b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java @@ -438,16 +438,15 @@ private OperationHandle executeStatementInternal(String statement, Map(); + } else { + Map conf = new HashMap(); + conf.putAll(confOverlay); + confOverlay = conf; } - String queryId = confOverlay.get(HiveConf.ConfVars.HIVEQUERYID.varname); - if (queryId == null || queryId.isEmpty()) { - queryId = QueryPlan.makeQueryId(); - confOverlay.put(HiveConf.ConfVars.HIVEQUERYID.varname, queryId); - } + confOverlay.put(HiveConf.ConfVars.HIVEQUERYID.varname, QueryPlan.makeQueryId()); OperationManager operationManager = getOperationManager(); ExecuteStatementOperation operation = operationManager