postgresql-jdbc.git / summary / log / commit / refs
commit 7bfff7aa9dbab549036fecd2d057d33bc4ef8144
Author: Dave Cramer <davecramer@gmail.com>
Commit: GitHub <noreply@github.com>
Date: Tue Sep 20 16:46:04 2022 +0000
fix: make sure we select array_in from pg_catalog to avoid duplicate array_in functions fixes #Issue 2548 (#2552)
* fix: make sure we select array_in from pg_catalog to avoid duplicate array_in functions fixes #Issue 2548
* dont run tests for versions less than 10
.../java/org/postgresql/jdbc/TypeInfoCache.java | 2 +-
.../postgresql/test/jdbc4/DatabaseMetaDataTest.java | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java b/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
index 23652327..d216ddaf 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
@@ -223,7 +223,7 @@ public class TypeInfoCache implements TypeInfo {
// (keeping old behaviour of finding types, that should not be found without correct search
// path)
StringBuilder sql = new StringBuilder();
- sql.append("SELECT typinput='array_in'::regproc as is_array, typtype, typname, pg_type.oid ");
+ sql.append("SELECT typinput='pg_catalog.array_in'::regproc as is_array, typtype, typname, pg_type.oid ");
sql.append(" FROM pg_catalog.pg_type ");
sql.append(" LEFT JOIN (select ns.oid as nspoid, ns.nspname, r.r ");
sql.append(" from pg_namespace as ns ");
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java
index dc027b71..c890668f 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java
@@ -473,4 +473,25 @@ public class DatabaseMetaDataTest {
lastType = type;
}
}
+
+ @Test
+ public void testGetSqlTypes() throws SQLException {
+ if (TestUtil.haveMinimumServerVersion(conn, ServerVersion.v10)) {
+ try (Connection privileged = TestUtil.openPrivilegedDB()) {
+ try (Statement stmt = privileged.createStatement()) {
+ // create a function called array_in
+ stmt.execute("CREATE OR REPLACE FUNCTION public.array_in(anyarray, oid, integer)\n"
+ + " RETURNS anyarray\n"
+ + " LANGUAGE internal\n"
+ + " STABLE PARALLEL SAFE STRICT\n"
+ + "AS $function$array_in$function$");
+ }
+ DatabaseMetaData dbmd = privileged.getMetaData();
+ ResultSet rs = dbmd.getTypeInfo();
+ try (Statement stmt = privileged.createStatement()) {
+ stmt.execute("drop function public.array_in(anyarray, oid, integer)");
+ }
+ }
+ }
+ }
}
[parent: 036a30d67d67]