Repository: hive
Updated Branches:
  refs/heads/branch-1 bf85f7a80 -> 5e371434d


HIVE-12500 : JDBC driver not overlaying params supplied via properties object 
when reading params from ZK (Vaibhav Gumashta via Thejas Nair)

Conflicts:
        
itests/hive-unit/src/test/java/org/apache/hive/jdbc/cbo_rp_TestJdbcDriver2.java
        jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java


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

Branch: refs/heads/branch-1
Commit: 5e371434d836efd2f09a64aedbd243d3e9701d57
Parents: bf85f7a
Author: Vaibhav Gumashta <[email protected]>
Authored: Wed Dec 2 15:54:48 2015 -0800
Committer: Thejas Nair <[email protected]>
Committed: Wed Dec 2 16:32:00 2015 -0800

----------------------------------------------------------------------
 .../org/apache/hive/jdbc/TestJdbcDriver2.java   |  2 +-
 .../org/apache/hive/jdbc/HiveConnection.java    | 26 +--------------
 .../java/org/apache/hive/jdbc/HiveDriver.java   |  2 +-
 jdbc/src/java/org/apache/hive/jdbc/Utils.java   | 33 +++++++++++++++++++-
 4 files changed, 35 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/5e371434/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
----------------------------------------------------------------------
diff --git 
a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java 
b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
index 2bcc0d6..146ba2a 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
@@ -1798,7 +1798,7 @@ public void testParseUrlHttpMode() throws SQLException, 
JdbcUriParseException,
     ZooKeeperHiveClientException {
   new HiveDriver();
   for (String[] testValues : HTTP_URL_PROPERTIES) {
-    JdbcConnectionParams params = Utils.parseURL(testValues[0]);
+    JdbcConnectionParams params = Utils.parseURL(testValues[0], new 
Properties());
     assertEquals(params.getHost(), testValues[1]);
     assertEquals(params.getPort(), Integer.parseInt(testValues[2]));
     assertEquals(params.getDbName(), testValues[3]);

http://git-wip-us.apache.org/repos/asf/hive/blob/5e371434/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
----------------------------------------------------------------------
diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java 
b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
index 3d9ae62..504c724 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
@@ -129,12 +129,11 @@ public class HiveConnection implements 
java.sql.Connection {
   public HiveConnection(String uri, Properties info) throws SQLException {
     setupLoginTimeout();
     try {
-      connParams = Utils.parseURL(uri);
+      connParams = Utils.parseURL(uri, info);
     } catch (ZooKeeperHiveClientException e) {
       throw new SQLException(e);
     }
     jdbcUriString = connParams.getJdbcUriString();
-    // extract parsed connection parameters:
     // JDBC URL: 
jdbc:hive2://<host>:<port>/dbName;sess_var_list?hive_conf_list#hive_var_list
     // each list: <key1>=<val1>;<key2>=<val2> and so on
     // sess_var_list -> sessConfMap
@@ -144,19 +143,7 @@ public class HiveConnection implements java.sql.Connection 
{
     port = connParams.getPort();
     sessConfMap = connParams.getSessionVars();
     hiveConfMap = connParams.getHiveConfs();
-
     hiveVarMap = connParams.getHiveVars();
-    for (Map.Entry<Object, Object> kv : info.entrySet()) {
-      if ((kv.getKey() instanceof String)) {
-        String key = (String) kv.getKey();
-        if (key.startsWith(HIVE_VAR_PREFIX)) {
-          hiveVarMap.put(key.substring(HIVE_VAR_PREFIX.length()), 
info.getProperty(key));
-        } else if (key.startsWith(HIVE_CONF_PREFIX)) {
-          hiveConfMap.put(key.substring(HIVE_CONF_PREFIX.length()), 
info.getProperty(key));
-        }
-      }
-    }
-
     isEmbeddedMode = connParams.isEmbeddedMode();
 
     if (isEmbeddedMode) {
@@ -164,17 +151,6 @@ public class HiveConnection implements java.sql.Connection 
{
       embeddedClient.init(null);
       client = embeddedClient;
     } else {
-      // extract user/password from JDBC connection properties if its not 
supplied in the
-      // connection URL
-      if (info.containsKey(JdbcConnectionParams.AUTH_USER)) {
-        sessConfMap.put(JdbcConnectionParams.AUTH_USER, 
info.getProperty(JdbcConnectionParams.AUTH_USER));
-        if (info.containsKey(JdbcConnectionParams.AUTH_PASSWD)) {
-          sessConfMap.put(JdbcConnectionParams.AUTH_PASSWD, 
info.getProperty(JdbcConnectionParams.AUTH_PASSWD));
-        }
-      }
-      if (info.containsKey(JdbcConnectionParams.AUTH_TYPE)) {
-        sessConfMap.put(JdbcConnectionParams.AUTH_TYPE, 
info.getProperty(JdbcConnectionParams.AUTH_TYPE));
-      }
       // open the client transport
       openTransport();
       // set up the client

http://git-wip-us.apache.org/repos/asf/hive/blob/5e371434/jdbc/src/java/org/apache/hive/jdbc/HiveDriver.java
----------------------------------------------------------------------
diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveDriver.java 
b/jdbc/src/java/org/apache/hive/jdbc/HiveDriver.java
index 396c314..2f7e0b3 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveDriver.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveDriver.java
@@ -232,7 +232,7 @@ public class HiveDriver implements Driver {
 
     JdbcConnectionParams params = null;
     try {
-      params = Utils.parseURL(url);
+      params = Utils.parseURL(url, defaults);
     } catch (ZooKeeperHiveClientException e) {
       throw new SQLException(e);
     }

http://git-wip-us.apache.org/repos/asf/hive/blob/5e371434/jdbc/src/java/org/apache/hive/jdbc/Utils.java
----------------------------------------------------------------------
diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java 
b/jdbc/src/java/org/apache/hive/jdbc/Utils.java
index d8368a4..399d0c5 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -127,6 +128,8 @@ class Utils {
     // Currently supports JKS keystore format
     static final String SSL_TRUST_STORE_TYPE = "JKS";
 
+    private static final String HIVE_VAR_PREFIX = "hivevar:";
+    private static final String HIVE_CONF_PREFIX = "hiveconf:";
     private String host = null;
     private int port = 0;
     private String jdbcUriString;
@@ -278,7 +281,7 @@ class Utils {
    * @return
    * @throws SQLException
    */
-  static JdbcConnectionParams parseURL(String uri) throws 
JdbcUriParseException,
+  static JdbcConnectionParams parseURL(String uri, Properties info) throws 
JdbcUriParseException,
       SQLException, ZooKeeperHiveClientException {
     JdbcConnectionParams connParams = new JdbcConnectionParams();
 
@@ -363,6 +366,34 @@ class Utils {
         connParams.getHiveVars().put(varMatcher.group(1), varMatcher.group(2));
       }
     }
+    
+    // Apply configs supplied in the JDBC connection properties object
+    for (Map.Entry<Object, Object> kv : info.entrySet()) {
+      if ((kv.getKey() instanceof String)) {
+        String key = (String) kv.getKey();
+        if (key.startsWith(JdbcConnectionParams.HIVE_VAR_PREFIX)) {
+          connParams.getHiveVars().put(
+              key.substring(JdbcConnectionParams.HIVE_VAR_PREFIX.length()), 
info.getProperty(key));
+        } else if (key.startsWith(JdbcConnectionParams.HIVE_CONF_PREFIX)) {
+          connParams.getHiveConfs().put(
+              key.substring(JdbcConnectionParams.HIVE_CONF_PREFIX.length()), 
info.getProperty(key));
+        }
+      }
+    }
+    // Extract user/password from JDBC connection properties if its not 
supplied
+    // in the connection URL
+    if (info.containsKey(JdbcConnectionParams.AUTH_USER)) {
+      connParams.getSessionVars().put(JdbcConnectionParams.AUTH_USER,
+          info.getProperty(JdbcConnectionParams.AUTH_USER));
+      if (info.containsKey(JdbcConnectionParams.AUTH_PASSWD)) {
+        connParams.getSessionVars().put(JdbcConnectionParams.AUTH_PASSWD,
+            info.getProperty(JdbcConnectionParams.AUTH_PASSWD));
+      }
+    }
+    if (info.containsKey(JdbcConnectionParams.AUTH_TYPE)) {
+      connParams.getSessionVars().put(JdbcConnectionParams.AUTH_TYPE,
+          info.getProperty(JdbcConnectionParams.AUTH_TYPE));
+    }
 
     // Handle all deprecations here:
     String newUsage;

Reply via email to