You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vg...@apache.org on 2014/10/11 22:15:34 UTC
svn commit: r1631109 - in /hive/branches/branch-0.14:
itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
jdbc/src/java/org/apache/hive/jdbc/Utils.java
Author: vgumashta
Date: Sat Oct 11 20:15:34 2014
New Revision: 1631109
URL: http://svn.apache.org/r1631109
Log:
HIVE-6972: jdbc HTTP configuration options should be part of sessionConf part of connection string
Modified:
hive/branches/branch-0.14/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/Utils.java
Modified: hive/branches/branch-0.14/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java?rev=1631109&r1=1631108&r2=1631109&view=diff
==============================================================================
--- hive/branches/branch-0.14/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java (original)
+++ hive/branches/branch-0.14/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestJdbcDriver2.java Sat Oct 11 20:15:34 2014
@@ -1646,29 +1646,24 @@ public class TestJdbcDriver2 {
}
private static final String[][] HTTP_URL_PROPERTIES = new String[][] {
- {"jdbc:hive2://server:10002/db;" +
- "user=foo;password=bar?" +
- "hive.server2.transport.mode=http;" +
- "hive.server2.thrift.http.path=hs2", "server", "10002", "db", "http", "hs2"},
- {"jdbc:hive2://server:10000/testdb;" +
- "user=foo;password=bar?" +
- "hive.server2.transport.mode=binary;" +
- "hive.server2.thrift.http.path=", "server", "10000", "testdb", "binary", ""},
- };
-
- @Test
- public void testParseUrlHttpMode() throws SQLException, JdbcUriParseException,
- ZooKeeperHiveClientException {
- new HiveDriver();
- for (String[] testValues : HTTP_URL_PROPERTIES) {
- JdbcConnectionParams params = Utils.parseURL(testValues[0]);
- assertEquals(params.getHost(), testValues[1]);
- assertEquals(params.getPort(), Integer.parseInt(testValues[2]));
- assertEquals(params.getDbName(), testValues[3]);
- assertEquals(params.getHiveConfs().get("hive.server2.transport.mode"), testValues[4]);
- assertEquals(params.getHiveConfs().get("hive.server2.thrift.http.path"), testValues[5]);
- }
+ { "jdbc:hive2://server:10002/db;user=foo;password=bar;transportMode=http;httpPath=hs2",
+ "server", "10002", "db", "http", "hs2" },
+ { "jdbc:hive2://server:10000/testdb;user=foo;password=bar;transportMode=binary;httpPath=",
+ "server", "10000", "testdb", "binary", "" }, };
+
+@Test
+public void testParseUrlHttpMode() throws SQLException, JdbcUriParseException,
+ ZooKeeperHiveClientException {
+ new HiveDriver();
+ for (String[] testValues : HTTP_URL_PROPERTIES) {
+ JdbcConnectionParams params = Utils.parseURL(testValues[0]);
+ assertEquals(params.getHost(), testValues[1]);
+ assertEquals(params.getPort(), Integer.parseInt(testValues[2]));
+ assertEquals(params.getDbName(), testValues[3]);
+ assertEquals(params.getSessionVars().get("transportMode"), testValues[4]);
+ assertEquals(params.getSessionVars().get("httpPath"), testValues[5]);
}
+}
private static void assertDpi(DriverPropertyInfo dpi, String name,
String value) {
Modified: hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java?rev=1631109&r1=1631108&r2=1631109&view=diff
==============================================================================
--- hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java (original)
+++ hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java Sat Oct 11 20:15:34 2014
@@ -218,7 +218,7 @@ public class HiveConnection implements j
String schemeName = useSsl ? "https" : "http";
// http path should begin with "/"
String httpPath;
- httpPath = hiveConfMap.get(JdbcConnectionParams.HTTP_PATH);
+ httpPath = sessConfMap.get(JdbcConnectionParams.HTTP_PATH);
if (httpPath == null) {
httpPath = "/";
} else if (!httpPath.startsWith("/")) {
@@ -485,7 +485,7 @@ public class HiveConnection implements j
}
private boolean isHttpTransportMode() {
- String transportMode = hiveConfMap.get(JdbcConnectionParams.TRANSPORT_MODE);
+ String transportMode = sessConfMap.get(JdbcConnectionParams.TRANSPORT_MODE);
if(transportMode != null && (transportMode.equalsIgnoreCase("http"))) {
return true;
}
Modified: hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/Utils.java
URL: http://svn.apache.org/viewvc/hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/Utils.java?rev=1631109&r1=1631108&r2=1631109&view=diff
==============================================================================
--- hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/Utils.java (original)
+++ hive/branches/branch-0.14/jdbc/src/java/org/apache/hive/jdbc/Utils.java Sat Oct 11 20:15:34 2014
@@ -66,7 +66,9 @@ public class Utils {
// Client param names:
static final String AUTH_TYPE = "auth";
- static final String AUTH_QOP = "sasl.qop";
+ // We're deprecating this variable's name.
+ static final String AUTH_QOP_DEPRECATED = "sasl.qop";
+ static final String AUTH_QOP = "saslQop";
static final String AUTH_SIMPLE = "noSasl";
static final String AUTH_TOKEN = "delegationToken";
static final String AUTH_USER = "user";
@@ -79,8 +81,14 @@ public class Utils {
static final String USE_SSL = "ssl";
static final String SSL_TRUST_STORE = "sslTrustStore";
static final String SSL_TRUST_STORE_PASSWORD = "trustStorePassword";
- static final String TRANSPORT_MODE = "hive.server2.transport.mode";
- static final String HTTP_PATH = "hive.server2.thrift.http.path";
+ // We're deprecating the name and placement of this in the parsed map (from hive conf vars to
+ // hive session vars).
+ static final String TRANSPORT_MODE_DEPRECATED = "hive.server2.transport.mode";
+ static final String TRANSPORT_MODE = "transportMode";
+ // We're deprecating the name and placement of this in the parsed map (from hive conf vars to
+ // hive session vars).
+ static final String HTTP_PATH_DEPRECATED = "hive.server2.thrift.http.path";
+ static final String HTTP_PATH = "httpPath";
static final String SERVICE_DISCOVERY_MODE = "serviceDiscoveryMode";
// Don't use dynamic serice discovery
static final String SERVICE_DISCOVERY_MODE_NONE = "none";
@@ -287,6 +295,10 @@ public class Utils {
// key=value pattern
Pattern pattern = Pattern.compile("([^;]*)=([^;]*)[;]?");
+ Map<String, String> sessionVarMap = connParams.getSessionVars();
+ Map<String, String> hiveConfMap = connParams.getHiveConfs();
+ Map<String, String> hiveVarMap = connParams.getHiveVars();
+
// dbname and session settings
String sessVars = jdbcURI.getPath();
if ((sessVars != null) && !sessVars.isEmpty()) {
@@ -303,7 +315,7 @@ public class Utils {
if (sessVars != null) {
Matcher sessMatcher = pattern.matcher(sessVars);
while (sessMatcher.find()) {
- if (connParams.getSessionVars().put(sessMatcher.group(1), sessMatcher.group(2)) != null) {
+ if (sessionVarMap.put(sessMatcher.group(1), sessMatcher.group(2)) != null) {
throw new JdbcUriParseException("Bad URL format: Multiple values for property "
+ sessMatcher.group(1));
}
@@ -320,7 +332,7 @@ public class Utils {
if (confStr != null) {
Matcher confMatcher = pattern.matcher(confStr);
while (confMatcher.find()) {
- connParams.getHiveConfs().put(confMatcher.group(1), confMatcher.group(2));
+ hiveConfMap.put(confMatcher.group(1), confMatcher.group(2));
}
}
@@ -329,10 +341,29 @@ public class Utils {
if (varStr != null) {
Matcher varMatcher = pattern.matcher(varStr);
while (varMatcher.find()) {
- connParams.getHiveVars().put(varMatcher.group(1), varMatcher.group(2));
+ hiveVarMap.put(varMatcher.group(1), varMatcher.group(2));
}
}
+ // Handle all deprecations here:
+ String newUsage;
+ String usageUrlBase = "jdbc:hive2://<host>:<port>/dbName;";
+ // Handle deprecation of AUTH_QOP_DEPRECATED
+ newUsage = usageUrlBase + JdbcConnectionParams.AUTH_QOP + "=<qop_value>";
+ handleParamDeprecation(sessionVarMap, sessionVarMap, JdbcConnectionParams.AUTH_QOP_DEPRECATED,
+ JdbcConnectionParams.AUTH_QOP, newUsage);
+
+ // Handle deprecation of TRANSPORT_MODE_DEPRECATED
+ newUsage = usageUrlBase + JdbcConnectionParams.TRANSPORT_MODE + "=<transport_mode_value>";
+ handleParamDeprecation(hiveConfMap, sessionVarMap,
+ JdbcConnectionParams.TRANSPORT_MODE_DEPRECATED, JdbcConnectionParams.TRANSPORT_MODE,
+ newUsage);
+
+ // Handle deprecation of HTTP_PATH_DEPRECATED
+ newUsage = usageUrlBase + JdbcConnectionParams.HTTP_PATH + "=<http_path_value>";
+ handleParamDeprecation(hiveConfMap, sessionVarMap, JdbcConnectionParams.HTTP_PATH_DEPRECATED,
+ JdbcConnectionParams.HTTP_PATH, newUsage);
+
// Extract host, port
if (connParams.isEmbeddedMode()) {
// In case of embedded mode we were supplied with an empty authority.
@@ -360,6 +391,25 @@ public class Utils {
}
/**
+ * Remove the deprecatedName param from the fromMap and put the key value in the toMap.
+ * Also log a deprecation message for the client.
+ * @param fromMap
+ * @param toMap
+ * @param oldName
+ * @param newName
+ */
+ private static void handleParamDeprecation(Map<String, String> fromMap, Map<String, String> toMap,
+ String deprecatedName, String newName, String newUsage) {
+ if (fromMap.containsKey(deprecatedName)) {
+ LOG.warn("***** JDBC param deprecation *****");
+ LOG.warn("The use of " + deprecatedName + " is deprecated.");
+ LOG.warn("Please use " + newName +" like so: " + newUsage);
+ String paramValue = fromMap.remove(deprecatedName);
+ toMap.put(newName, paramValue);
+ }
+ }
+
+ /**
* Get the authority string from the supplied uri, which could potentially contain multiple
* host:port pairs.
*