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.
    *