You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by jo...@apache.org on 2019/06/11 20:01:58 UTC

[impala] 01/05: Add option to set driver in ImpalaJdbcDriver

This is an automated email from the ASF dual-hosted git repository.

joemcdonnell pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git

commit 2f3780e846d8c0870e73788837af67019481ae23
Author: Thomas Tauber-Marshall <tm...@cloudera.com>
AuthorDate: Mon Jun 3 11:41:06 2019 -0700

    Add option to set driver in ImpalaJdbcDriver
    
    ImpalaJdbcDriver is a simple class that provides a wrapper around the
    Hive Jdbc driver for use in testing. This patch adds a '-d' parameter
    that takes a driver class and executes queries with that driver
    instead of the Hive driver, if its in the classpath.
    
    This makes it easy to use ./bin/run-jdbc-client.sh to test other
    Jdbc drivers, such as the proprietary Cloudera Impala driver.
    
    Change-Id: Ie6c8cec2f61e76b7c8321c954eef830778d8a8ee
    Reviewed-on: http://gerrit.cloudera.org:8080/13514
    Reviewed-by: Thomas Marshall <tm...@cloudera.com>
    Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
 .../apache/impala/testutil/ImpalaJdbcClient.java   | 40 ++++++++++++++--------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/fe/src/test/java/org/apache/impala/testutil/ImpalaJdbcClient.java b/fe/src/test/java/org/apache/impala/testutil/ImpalaJdbcClient.java
index 01a4b2f..c52399a 100644
--- a/fe/src/test/java/org/apache/impala/testutil/ImpalaJdbcClient.java
+++ b/fe/src/test/java/org/apache/impala/testutil/ImpalaJdbcClient.java
@@ -103,7 +103,7 @@ public class ImpalaJdbcClient {
     // Make sure the driver can be found, throws a ClassNotFoundException if
     // it is not available.
     Class.forName(driverName_);
-    conn_ = DriverManager.getConnection(connString_, "", "");
+    conn_ = DriverManager.getConnection(connString_);
     stmt_ = conn_.createStatement();
   }
 
@@ -145,17 +145,20 @@ public class ImpalaJdbcClient {
     return stmt_;
   }
 
+  public static ImpalaJdbcClient createClient(String driver, String connString) {
+    return new ImpalaJdbcClient(driver, connString);
+  }
+
   public static ImpalaJdbcClient createClientUsingHiveJdbcDriver() {
-    return new ImpalaJdbcClient(
-        HIVE_SERVER2_DRIVER_NAME, getNoAuthConnectionStr("binary"));
+    return createClient(HIVE_SERVER2_DRIVER_NAME, getNoAuthConnectionStr("binary"));
   }
 
   public static ImpalaJdbcClient createClientUsingHiveJdbcDriver(String connString) {
-    return new ImpalaJdbcClient(HIVE_SERVER2_DRIVER_NAME, connString);
+    return createClient(HIVE_SERVER2_DRIVER_NAME, connString);
   }
 
   public static ImpalaJdbcClient createHttpClientUsingHiveJdbcDriver() {
-    return new ImpalaJdbcClient(HIVE_SERVER2_DRIVER_NAME, getNoAuthConnectionStr("http"));
+    return createClient(HIVE_SERVER2_DRIVER_NAME, getNoAuthConnectionStr("http"));
   }
 
   public static String getNoAuthConnectionStr(String connType) {
@@ -183,10 +186,12 @@ public class ImpalaJdbcClient {
   private static class ClientExecOptions {
     private final String connStr;
     private final String query;
+    private final String driver;
 
-    public ClientExecOptions(String connStr, String query) {
+    public ClientExecOptions(String connStr, String query, String driver) {
       this.connStr = connStr;
       this.query = query;
+      this.driver = driver;
     }
 
     public String getQuery() {
@@ -196,6 +201,10 @@ public class ImpalaJdbcClient {
     public String getConnStr() {
       return connStr;
     }
+
+    public String getDriver() {
+      return driver;
+    }
   }
 
   /**
@@ -208,6 +217,7 @@ public class ImpalaJdbcClient {
         "Full connection string to use. Overrides host/port value");
     options.addOption("t", true, "SASL/NOSASL, whether to use SASL transport or not");
     options.addOption("q", true, "Query String");
+    options.addOption("d", true, "Driver name, default: org.apache.hive.jdbc.HiveDriver");
     options.addOption("help", false, "Help");
 
     BasicParser optionParser = new BasicParser();
@@ -235,12 +245,12 @@ public class ImpalaJdbcClient {
     if (connStr == null) {
       String hostPort = cmdArgs.getOptionValue("i", "localhost:21050");
       connStr = "jdbc:hive2://" + hostPort + "/";
-    }
-    // Append appropriate auth option to connection string.
-    if (useSasl) {
-      connStr = connStr + SASL_AUTH_SPEC;
-    } else {
-      connStr = connStr + NOSASL_AUTH_SPEC;
+      // Append appropriate auth option to connection string.
+      if (useSasl) {
+        connStr = connStr + SASL_AUTH_SPEC;
+      } else {
+        connStr = connStr + NOSASL_AUTH_SPEC;
+      }
     }
 
     String query = cmdArgs.getOptionValue("q");
@@ -250,7 +260,9 @@ public class ImpalaJdbcClient {
       System.exit(1);
     }
 
-    return new ClientExecOptions(connStr, query);
+    String driver = cmdArgs.getOptionValue("d", HIVE_SERVER2_DRIVER_NAME);
+
+    return new ClientExecOptions(connStr, query, driver);
   }
 
   private static String formatColumnValue(String colVal, String columnType)
@@ -338,7 +350,7 @@ public class ImpalaJdbcClient {
     ClientExecOptions execOptions = parseOptions(args);
 
     ImpalaJdbcClient client =
-      ImpalaJdbcClient.createClientUsingHiveJdbcDriver(execOptions.getConnStr());
+      ImpalaJdbcClient.createClient(execOptions.getDriver(), execOptions.getConnStr());
 
     try {
       client.connect();