From e693b08304b150c8a2cd59ba4ed8c4dff682ba8c Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 10 Aug 2017 15:27:58 +0800 Subject: [PATCH] JdbcUtils.showTables support postgresql. --- .../com/alibaba/druid/util/JdbcUtils.java | 3 +++ .../java/com/alibaba/druid/util/PGUtils.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/com/alibaba/druid/util/JdbcUtils.java b/src/main/java/com/alibaba/druid/util/JdbcUtils.java index e2abba5403..a0b9a7abd7 100644 --- a/src/main/java/com/alibaba/druid/util/JdbcUtils.java +++ b/src/main/java/com/alibaba/druid/util/JdbcUtils.java @@ -793,6 +793,9 @@ public final class JdbcUtils implements JdbcConstants { return OracleUtils.showTables(conn); } + if (JdbcConstants.POSTGRESQL.equals(dbType)) { + return PGUtils.showTables(conn); + } throw new SQLException("show tables dbType not support for " + dbType); } diff --git a/src/main/java/com/alibaba/druid/util/PGUtils.java b/src/main/java/com/alibaba/druid/util/PGUtils.java index b22c262dda..a940714408 100644 --- a/src/main/java/com/alibaba/druid/util/PGUtils.java +++ b/src/main/java/com/alibaba/druid/util/PGUtils.java @@ -16,7 +16,11 @@ package com.alibaba.druid.util; import java.sql.Connection; +import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; import javax.sql.XAConnection; @@ -28,4 +32,24 @@ public class PGUtils { public static XAConnection createXAConnection(Connection physicalConn) throws SQLException { return new PGXAConnection((BaseConnection) physicalConn); } + + public static List showTables(Connection conn) throws SQLException { + List tables = new ArrayList(); + + Statement stmt = null; + ResultSet rs = null; + try { + stmt = conn.createStatement(); + rs = stmt.executeQuery("SELECT tablename FROM pg_catalog.pg_tables where schemaname not in ('pg_catalog', 'information_schema', 'sys')"); + while (rs.next()) { + String tableName = rs.getString(1); + tables.add(tableName); + } + } finally { + JdbcUtils.close(rs); + JdbcUtils.close(stmt); + } + + return tables; + } }