[ https://issues.apache.org/jira/browse/HIVE-6363?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14164827#comment-14164827 ]
Rémy DUBOIS commented on HIVE-6363: ----------------------------------- Hello everyone, I don't understand clearly the status of this issue. I understand a patch has been created, but I also see that HIVE-4194 should fix this issue, but has not been closed after it's been reopened. Can you please clarify? Thanks in advance, > IllegalArgumentException is thrown instead of SQLException > ---------------------------------------------------------- > > Key: HIVE-6363 > URL: https://issues.apache.org/jira/browse/HIVE-6363 > Project: Hive > Issue Type: Bug > Components: JDBC > Affects Versions: 0.10.0, 0.11.0, 0.12.0 > Reporter: chandra sekhar gunturi > Priority: Critical > Labels: JDBC, unit-test > Attachments: HIVE-6363.patch.1.txt, HIVE-6363.patch.2.txt > > Original Estimate: 24h > Remaining Estimate: 24h > > parseURL in the following code is throwing IllegalArgumentException > http://svn.apache.org/viewvc/hive/trunk/jdbc/src/java/org/apache/hive/jdbc/Utils.java?view=markup > > This is going to break other JDBC based connectors because > java.sql.DriverManager doesn’t catch IllegalArgumentException while probing > for correct Driver for a given URL. > A simple test case can have class.forName(org.apache.hive.jdbc.HiveDriver) > (Loading hiveserver2 JDBC driver) followed by > class.forName(org.apache.hadoop.hive.jdbc.HiveDriver)(Loading hiveserver JDBC > driver). > In this case hiveserver connection will fail with BAD URL format for > hiveserver. If you reverse the driver loading to hiveserver followed by > hiveserver2, both the connections will be successful. > Following code in java.sql.DriverManager is causing the issue > [[ > // Worker method called by the public getConnection() methods. > private static Connection getConnection( > // Walk through the loaded registeredDrivers attempting to make a connection. > // Remember the first exception that gets raised so we can reraise it. > for(DriverInfo aDriver : registeredDrivers) { > // If the caller does not have permission to load the driver then > // skip it. > if(isDriverAllowed(aDriver.driver, callerCL)) { > try { > Connection con = aDriver.driver.connect(url, info); > if (con != null) { > // Success! > println("getConnection returning " + aDriver.driver.getClass().getName()); > return (con); > } > } catch (SQLException ex) { > if (reason == null) { > reason = ex; > } > } > } else { > println(" skipping: " + aDriver.getClass().getName()); > } > } > } > ]] > Marking it as critical because this is going to restrict consuming JDBC > driver in production environment where many drivers are loaded on requirement > rather than statically loading all drivers. -- This message was sent by Atlassian JIRA (v6.3.4#6332)