You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vi...@apache.org on 2016/03/22 22:05:05 UTC
[2/2] hive git commit: HIVE-13286: Query ID is being reused across
queries (Aihua Xu via Vikram Dixit K)
HIVE-13286: Query ID is being reused across queries (Aihua Xu via Vikram Dixit K)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/d4453d1b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/d4453d1b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/d4453d1b
Branch: refs/heads/branch-2.0
Commit: d4453d1bb398cf174c22e478be56facec36a9eed
Parents: 1971269
Author: vikram <vi...@hortonworks.com>
Authored: Tue Mar 22 13:41:37 2016 -0700
Committer: vikram <vi...@hortonworks.com>
Committed: Tue Mar 22 13:58:33 2016 -0700
----------------------------------------------------------------------
cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java | 3 +++
.../hive/service/cli/session/TestHiveSessionImpl.java | 5 +++--
ql/src/java/org/apache/hadoop/hive/ql/Driver.java | 6 ------
.../hive/service/cli/session/HiveSessionImpl.java | 13 ++++++-------
4 files changed, 12 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
----------------------------------------------------------------------
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.conf.HiveConf.ConfVars;
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 class CliDriver {
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();
http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestHiveSessionImpl.java
----------------------------------------------------------------------
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 8a32a07..04ed557 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.apache.hive.service.cli.thrift.TProtocolVersion;
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 @@ public class TestHiveSessionImpl {
Mockito.when(operation.getHandle()).thenReturn(opHandle);
Map<String, String> confOverlay = new HashMap<String, String>();
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<String, String>)Mockito.any(), eq(true))).thenReturn(operation);
try {
http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
----------------------------------------------------------------------
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 04db836..1ec71ea 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -404,13 +404,7 @@ public class Driver implements CommandProcessor {
}
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);
- }
LOG.info("Compiling command(queryId=" + queryId + "): " + queryStr);
http://git-wip-us.apache.org/repos/asf/hive/blob/d4453d1b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
----------------------------------------------------------------------
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 c95a86e..2314e26 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
@@ -432,16 +432,15 @@ public class HiveSessionImpl implements HiveSession {
throws HiveSQLException {
acquire(true);
- // Create the queryId if the client doesn't pass in.
- // Reuse the client's queryId if exists.
+ // Make a copy of confOverlay
if (confOverlay == null) {
confOverlay = new HashMap<String, String>();
+ } else {
+ Map<String, String> conf = new HashMap<String, String>();
+ 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