You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by th...@apache.org on 2015/12/03 00:54:59 UTC

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

Repository: hive
Updated Branches:
  refs/heads/master 0e5911a84 -> 187829fa9


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


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

Branch: refs/heads/master
Commit: 187829fa90f9fd0e81f564f80ab148baa24306d0
Parents: 0e5911a
Author: Vaibhav Gumashta <vg...@apache.org>
Authored: Wed Dec 2 15:54:48 2015 -0800
Committer: Thejas Nair <th...@hortonworks.com>
Committed: Wed Dec 2 15:54:48 2015 -0800

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


http://git-wip-us.apache.org/repos/asf/hive/blob/187829fa/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 7bbacd5..65016b7 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
@@ -1953,7 +1953,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/187829fa/itests/hive-unit/src/test/java/org/apache/hive/jdbc/cbo_rp_TestJdbcDriver2.java
----------------------------------------------------------------------
diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/cbo_rp_TestJdbcDriver2.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/cbo_rp_TestJdbcDriver2.java
index 05361d2..c66f166 100644
--- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/cbo_rp_TestJdbcDriver2.java
+++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/cbo_rp_TestJdbcDriver2.java
@@ -1138,7 +1138,7 @@ public class cbo_rp_TestJdbcDriver2 {
     for (String checkPattern: tests.keySet()) {
       ResultSet rs = con.getMetaData().getTables("default", null, checkPattern, null);
       ResultSetMetaData resMeta = rs.getMetaData();
-      assertEquals(5, resMeta.getColumnCount());
+      assertEquals(10, resMeta.getColumnCount());
       assertEquals("TABLE_CAT", resMeta.getColumnName(1));
       assertEquals("TABLE_SCHEM", resMeta.getColumnName(2));
       assertEquals("TABLE_NAME", resMeta.getColumnName(3));
@@ -1817,7 +1817,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/187829fa/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 f79d73d..c312ece 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
@@ -103,8 +103,6 @@ import java.util.concurrent.TimeUnit;
  */
 public class HiveConnection implements java.sql.Connection {
   public static final Logger LOG = LoggerFactory.getLogger(HiveConnection.class.getName());
-  private static final String HIVE_VAR_PREFIX = "hivevar:";
-  private static final String HIVE_CONF_PREFIX = "hiveconf:";
 
   private String jdbcUriString;
   private String host;
@@ -128,12 +126,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
@@ -143,19 +140,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) {
@@ -163,17 +148,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/187829fa/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 dbc9612..a349f8b 100644
--- a/jdbc/src/java/org/apache/hive/jdbc/HiveDriver.java
+++ b/jdbc/src/java/org/apache/hive/jdbc/HiveDriver.java
@@ -238,7 +238,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/187829fa/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 11b4109..d3f8878 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;