From 51c770e394982b4709aaea6ce204c7ee1ee08974 Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Fri, 17 Jun 2022 11:01:53 -0400 Subject: [PATCH 1/4] fix: make sure we select array_in from pg_catalog to avoid duplicate array_in functions fixes #Issue 2548 --- .../org/postgresql/jdbc/TypeInfoCache.java | 2 +- .../test/jdbc4/DatabaseMetaDataTest.java | 19 +++++++++++++++++++ 2 files changed, 20 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 5f24171fc2..1cd28f78ff 100644 --- a/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java +++ b/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java @@ -219,7 +219,7 @@ private String getSQLTypeQuery(boolean typoidParam) { // (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 dc027b7136..0bca79790e 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,23 @@ public void testSortedDataTypes() throws SQLException { lastType = type; } } + @Test + public void testGetSqlTypes() throws SQLException { + 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$\n" + + ";"); + } + DatabaseMetaData dbmd = privileged.getMetaData(); + ResultSet rs = dbmd.getTypeInfo(); + try (Statement stmt = privileged.createStatement()) { + stmt.execute("drop function public.array_in(anyarray, oid, integer)"); + } + } + } } From f32a9c1e4052e47156475c2070ed26d026861926 Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Fri, 17 Jun 2022 11:18:06 -0400 Subject: [PATCH 2/4] checkstyle --- .../postgresql/test/jdbc4/DatabaseMetaDataTest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 0bca79790e..651da73435 100644 --- a/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java +++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java @@ -473,17 +473,17 @@ public void testSortedDataTypes() throws SQLException { lastType = type; } } + @Test public void testGetSqlTypes() throws SQLException { 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$\n" + - ";"); + 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(); From 3d72d14b143fd231bfc577db701092150a2f6236 Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Fri, 17 Jun 2022 11:40:49 -0400 Subject: [PATCH 3/4] dont run tests for versions less than 10 --- .../test/jdbc4/DatabaseMetaDataTest.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) 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 651da73435..c890668f13 100644 --- a/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java +++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc4/DatabaseMetaDataTest.java @@ -476,19 +476,21 @@ public void testSortedDataTypes() throws SQLException { @Test public void testGetSqlTypes() throws SQLException { - 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)"); + 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)"); + } } } } From 6edea137792314dedb4701b678e345bbed4c4f63 Mon Sep 17 00:00:00 2001 From: Dave Cramer Date: Fri, 17 Jun 2022 14:26:21 -0400 Subject: [PATCH 4/4] bump gradle to version 3 to fix compile errors with jdk17 (#2550) --- test-gss/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-gss/build.gradle b/test-gss/build.gradle index 23561787d8..06590a84da 100644 --- a/test-gss/build.gradle +++ b/test-gss/build.gradle @@ -13,7 +13,7 @@ repositories { } dependencies { - implementation('org.codehaus.groovy:groovy-all:2.5.12') + implementation('org.codehaus.groovy:groovy-all:3.0.11') implementation(group: 'org.postgresql', name: 'postgresql', version: '1.0.0-dev-master-SNAPSHOT') testImplementation(group: 'junit', name: 'junit', version: '4.12') }