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;