From 5459e967fcc990b812d37744a4038987c1fd3a74 Mon Sep 17 00:00:00 2001 From: "shaojin.wensj" Date: Sun, 5 Jul 2015 23:55:21 +0800 Subject: [PATCH] improved support for hive-jdbc --- .../com/alibaba/druid/pool/DruidConnectionHolder.java | 8 ++++++++ src/main/java/com/alibaba/druid/util/JdbcConstants.java | 1 + src/main/java/com/alibaba/druid/util/JdbcUtils.java | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java b/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java index 32823227ca..db96e69464 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java +++ b/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java @@ -26,6 +26,7 @@ import javax.sql.StatementEventListener; import java.sql.Connection; import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; import java.sql.Statement; import java.util.ArrayList; import java.util.Date; @@ -87,7 +88,14 @@ public final class DruidConnectionHolder { } catch (UnsupportedOperationException e) { holdabilityUnsupported = true; LOG.warn("getHoldability unsupported", e); + } catch (SQLFeatureNotSupportedException e) { + holdabilityUnsupported = true; + LOG.warn("getHoldability unsupported", e); } catch (SQLException e) { + // bug fixed for hive jdbc-driver + if ("Method not supported".equals(e.getMessage())) { + holdabilityUnsupported = true; + } LOG.warn("getHoldability error", e); } } diff --git a/src/main/java/com/alibaba/druid/util/JdbcConstants.java b/src/main/java/com/alibaba/druid/util/JdbcConstants.java index 454cd69f50..3f434a5c89 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcConstants.java +++ b/src/main/java/com/alibaba/druid/util/JdbcConstants.java @@ -52,6 +52,7 @@ public interface JdbcConstants { public static final String HBASE = "hbase"; public static final String HIVE = "hive"; + public static final String HIVE_DRIVER = "org.apache.hive.jdbc.HiveDriver"; public static final String H2 = "h2"; public static final String H2_DRIVER = "org.h2.Driver"; diff --git a/src/main/java/com/alibaba/druid/util/JdbcUtils.java b/src/main/java/com/alibaba/druid/util/JdbcUtils.java index 42a6e1cb6c..5edada2ad3 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java @@ -422,6 +422,8 @@ public final class JdbcUtils implements JdbcConstants { return JdbcConstants.DM_DRIVER; } else if (rawUrl.startsWith("jdbc:kingbase:")) { return JdbcConstants.KINGBASE_DRIVER; + } else if (rawUrl.startsWith("jdbc:hive:")) { + return JdbcConstants.HIVE_DRIVER; } else { throw new SQLException("unkow jdbc driver : " + rawUrl); } @@ -497,6 +499,8 @@ public final class JdbcUtils implements JdbcConstants { return JdbcConstants.KINGBASE; } else if (rawUrl.startsWith("jdbc:log4jdbc:")) { return LOG4JDBC; + } else if (rawUrl.startsWith("jdbc:hive:")) { + return HIVE; } else { return null; }