postgresql-jdbc.git / summary / log / commit / refs
commit e44e4e8972ec41bf05dddd4ac6dcfbc42a9842cf
Author: Dave Cramer <davecramer@gmail.com>
Commit: GitHub <noreply@github.com>
Date: Tue Oct 16 12:46:58 2018 +0000
perf: ignore tables for PgDatabaseMetaData.getTypeInfo (#1302)
PostgreSQL considers tables to be composite types which
in very large schemas with lots of tables slows down getTypeInfo.
This fix filters out tables from types
pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
index 4abab216..f317b234 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
@@ -2224,7 +2224,9 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
String sql;
sql = "SELECT t.typname,t.oid FROM pg_catalog.pg_type t"
+ " JOIN pg_catalog.pg_namespace n ON (t.typnamespace = n.oid) "
- + " WHERE n.nspname != 'pg_toast'";
+ + " WHERE n.nspname != 'pg_toast'"
+ + " AND "
+ + " (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid))";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
[parent: 10201f617278]