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]