diff --git jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index 0915171..aabb5cb 100644 --- jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -297,8 +297,10 @@ private void configureConnection(String dbName) throws SQLException { for (Entry hiveVar : hiveVarMap.entrySet()) { stmt.execute("set hivevar:" + hiveVar.getKey() + "=" + hiveVar.getValue()); } - if(dbName!=null) - stmt.execute("use "+dbName); + // if the client is setting a non-default db, then switch the database + if (!Utils.DEFAULT_DATABASE.equalsIgnoreCase(dbName)) { + stmt.execute("use " + dbName); + } stmt.close(); } } diff --git jdbc/src/java/org/apache/hive/jdbc/Utils.java jdbc/src/java/org/apache/hive/jdbc/Utils.java index 913dc46..47c38e7 100644 --- jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -229,17 +229,16 @@ public static JdbcConnectionParams parseURL(String uri) throws IllegalArgumentEx // dbname and session settings String sessVars = jdbcURI.getPath(); - if ((sessVars == null) || sessVars.isEmpty()) { - connParams.setDbName(DEFAULT_DATABASE); - } else { + if ((sessVars != null) && !sessVars.isEmpty()) { + String dbName = ""; // removing leading '/' returned by getPath() sessVars = sessVars.substring(1); if (!sessVars.contains(";")) { // only dbname is provided - connParams.setDbName(sessVars); + dbName = sessVars; } else { // we have dbname followed by session parameters - connParams.setDbName(sessVars.substring(0, sessVars.indexOf(';'))); + dbName = sessVars.substring(0, sessVars.indexOf(';')); sessVars = sessVars.substring(sessVars.indexOf(';')+1); if (sessVars != null) { Matcher sessMatcher = pattern.matcher(sessVars); @@ -248,6 +247,9 @@ public static JdbcConnectionParams parseURL(String uri) throws IllegalArgumentEx } } } + if (!dbName.isEmpty()) { + connParams.setDbName(dbName); + } } // parse hive conf settings