Repository: hive
Updated Branches:
  refs/heads/branch-2.1 7fbb722f5 -> 68e8ee0b1
  refs/heads/master 89e1b8d61 -> fb0f1ab7d


HIVE-14072 : QueryIds reused across different queries (Sergey Shelukhin, 
reviewed by Vaibhav Gumashta)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fb0f1ab7
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fb0f1ab7
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fb0f1ab7

Branch: refs/heads/master
Commit: fb0f1ab7d92a82ef4b3453052a101bebfe778a3f
Parents: 89e1b8d
Author: Sergey Shelukhin <ser...@apache.org>
Authored: Fri Jul 1 18:59:55 2016 -0700
Committer: Sergey Shelukhin <ser...@apache.org>
Committed: Fri Jul 1 18:59:55 2016 -0700

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hive/ql/QTestUtil.java     |  1 +
 ql/src/java/org/apache/hadoop/hive/ql/Driver.java     | 14 +++++++++++---
 .../hive/ql/processors/CommandProcessorFactory.java   |  2 ++
 .../apache/hive/service/cli/operation/Operation.java  |  4 ----
 .../hive/service/cli/operation/SQLOperation.java      |  4 ++++
 .../service/cli/operation/SQLOperationDisplay.java    |  2 +-
 6 files changed, 19 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/fb0f1ab7/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
----------------------------------------------------------------------
diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java 
b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
index 0a954fc..573fea1 100644
--- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
+++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/QTestUtil.java
@@ -1662,6 +1662,7 @@ public class QTestUtil {
   public void resetParser() throws SemanticException {
     drv.init();
     pd = new ParseDriver();
+    queryState = new QueryState(conf);
     sem = new SemanticAnalyzer(queryState);
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/fb0f1ab7/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 d56295a..5fe3525 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
@@ -299,9 +299,6 @@ public class Driver implements CommandProcessor {
         SessionState.get().getConf() : new HiveConf()), null);
   }
 
-  /**
-   * for backwards compatibility with current tests
-   */
   public Driver(HiveConf conf) {
     this(new QueryState(conf), null);
   }
@@ -2031,4 +2028,15 @@ public class Driver implements CommandProcessor {
   public void setOperationId(String opId) {
     this.operationId = opId;
   }
+
+  /** 
+   * Resets QueryState to get new queryId on Driver reuse.
+   */
+  public void resetQueryState() {
+    // Note: Driver cleanup for reuse at this point is not very clear. The 
assumption here is that
+    // repeated compile/execute calls create new contexts, plan, etc., so we 
don't need to worry
+    // propagating queryState into those existing fields, or resetting them.
+    releaseResources();
+    this.queryState = new QueryState(queryState.getConf());
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/fb0f1ab7/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java 
b/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
index c343b0e..e61864e 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/processors/CommandProcessorFactory.java
@@ -120,6 +120,8 @@ public final class CommandProcessorFactory {
       if (drv == null) {
         drv = new Driver();
         mapDrivers.put(conf, drv);
+      } else {
+        drv.resetQueryState();
       }
       drv.init();
       return drv;

http://git-wip-us.apache.org/repos/asf/hive/blob/fb0f1ab7/service/src/java/org/apache/hive/service/cli/operation/Operation.java
----------------------------------------------------------------------
diff --git 
a/service/src/java/org/apache/hive/service/cli/operation/Operation.java 
b/service/src/java/org/apache/hive/service/cli/operation/Operation.java
index d48b92c..ba034ab 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/Operation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/Operation.java
@@ -104,10 +104,6 @@ public abstract class Operation {
     queryState = new QueryState(parentSession.getHiveConf(), confOverlay, 
runAsync);
   }
 
-  public QueryState getQueryState() {
-    return queryState;
-  }
-
   public Future<?> getBackgroundHandle() {
     return backgroundHandle;
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/fb0f1ab7/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
----------------------------------------------------------------------
diff --git 
a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java 
b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
index 9cb5daf..28c4553 100644
--- a/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
+++ b/service/src/java/org/apache/hive/service/cli/operation/SQLOperation.java
@@ -664,4 +664,8 @@ public class SQLOperation extends ExecuteStatementOperation 
{
       }
     }
   }
+
+  public String getExecutionEngine() {
+    return 
queryState.getConf().getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE);
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/fb0f1ab7/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
----------------------------------------------------------------------
diff --git 
a/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
 
b/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
index c521706..3cfeccc 100644
--- 
a/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
+++ 
b/service/src/java/org/apache/hive/service/cli/operation/SQLOperationDisplay.java
@@ -41,7 +41,7 @@ public class SQLOperationDisplay {
   public SQLOperationDisplay(SQLOperation sqlOperation) throws 
HiveSQLException {
     this.state = sqlOperation.getState();
     this.userName = sqlOperation.getParentSession().getUserName();
-    this.executionEngine = 
sqlOperation.getQueryState().getConf().getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE);
+    this.executionEngine = sqlOperation.getExecutionEngine();
     this.beginTime = System.currentTimeMillis();
     this.operationId = 
sqlOperation.getHandle().getHandleIdentifier().toString();
   }

Reply via email to