From 16870949682a451590c1c7bcd047a4632c82c200 Mon Sep 17 00:00:00 2001 From: Undover Date: Fri, 5 Apr 2024 16:25:40 +0200 Subject: [PATCH] H2Util: Exclude PostgreSQL schema PG_CATALOG from being reset --- .../de/cronn/testutils/h2/H2PostgresModeUtilTest.java | 9 +++++++++ .../src/main/java/de/cronn/testutils/h2/H2UtilTest.java | 2 +- .../cronn/testutils/h2/v1_4/H2PostgresModeUtilTest.java | 4 ++++ .../cronn/testutils/h2/v2_0/H2PostgresModeUtilTest.java | 4 ++++ .../cronn/testutils/h2/v2_1/H2PostgresModeUtilTest.java | 4 ++++ src/main/java/de/cronn/testutils/h2/H2Util.java | 2 +- 6 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2PostgresModeUtilTest.java create mode 100644 spring-boot-tests/h2/tests-h2-1.4.x/src/test/java/de/cronn/testutils/h2/v1_4/H2PostgresModeUtilTest.java create mode 100644 spring-boot-tests/h2/tests-h2-2.0.x/src/test/java/de/cronn/testutils/h2/v2_0/H2PostgresModeUtilTest.java create mode 100644 spring-boot-tests/h2/tests-h2-2.1.x/src/test/java/de/cronn/testutils/h2/v2_1/H2PostgresModeUtilTest.java diff --git a/spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2PostgresModeUtilTest.java b/spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2PostgresModeUtilTest.java new file mode 100644 index 0000000..32b4bcf --- /dev/null +++ b/spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2PostgresModeUtilTest.java @@ -0,0 +1,9 @@ +package de.cronn.testutils.h2; + +import org.springframework.test.context.TestPropertySource; + +@TestPropertySource(properties = { + "spring.datasource.url=jdbc:h2:mem:testdb;INIT=CREATE SCHEMA IF NOT EXISTS SECOND_SCHEMA;MODE=PostgreSQL", +}) +public abstract class H2PostgresModeUtilTest extends H2UtilTest { +} diff --git a/spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2UtilTest.java b/spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2UtilTest.java index b707c98..12a25b0 100644 --- a/spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2UtilTest.java +++ b/spring-boot-tests/h2/src/main/java/de/cronn/testutils/h2/H2UtilTest.java @@ -150,7 +150,7 @@ int countRows(String table) { } int countTables() { - return jdbcTemplate.queryForObject("select count(*) from information_schema.tables where table_type in ('TABLE', 'BASE TABLE') and table_schema <> 'INFORMATION_SCHEMA'", Integer.class); + return jdbcTemplate.queryForObject("select count(*) from information_schema.tables where table_type in ('TABLE', 'BASE TABLE') and table_schema not in ('INFORMATION_SCHEMA', 'PG_CATALOG')", Integer.class); } } diff --git a/spring-boot-tests/h2/tests-h2-1.4.x/src/test/java/de/cronn/testutils/h2/v1_4/H2PostgresModeUtilTest.java b/spring-boot-tests/h2/tests-h2-1.4.x/src/test/java/de/cronn/testutils/h2/v1_4/H2PostgresModeUtilTest.java new file mode 100644 index 0000000..a2e8120 --- /dev/null +++ b/spring-boot-tests/h2/tests-h2-1.4.x/src/test/java/de/cronn/testutils/h2/v1_4/H2PostgresModeUtilTest.java @@ -0,0 +1,4 @@ +package de.cronn.testutils.h2.v1_4; + +public class H2PostgresModeUtilTest extends de.cronn.testutils.h2.H2PostgresModeUtilTest { +} diff --git a/spring-boot-tests/h2/tests-h2-2.0.x/src/test/java/de/cronn/testutils/h2/v2_0/H2PostgresModeUtilTest.java b/spring-boot-tests/h2/tests-h2-2.0.x/src/test/java/de/cronn/testutils/h2/v2_0/H2PostgresModeUtilTest.java new file mode 100644 index 0000000..c455446 --- /dev/null +++ b/spring-boot-tests/h2/tests-h2-2.0.x/src/test/java/de/cronn/testutils/h2/v2_0/H2PostgresModeUtilTest.java @@ -0,0 +1,4 @@ +package de.cronn.testutils.h2.v2_0; + +public class H2PostgresModeUtilTest extends de.cronn.testutils.h2.H2PostgresModeUtilTest { +} diff --git a/spring-boot-tests/h2/tests-h2-2.1.x/src/test/java/de/cronn/testutils/h2/v2_1/H2PostgresModeUtilTest.java b/spring-boot-tests/h2/tests-h2-2.1.x/src/test/java/de/cronn/testutils/h2/v2_1/H2PostgresModeUtilTest.java new file mode 100644 index 0000000..963e5fd --- /dev/null +++ b/spring-boot-tests/h2/tests-h2-2.1.x/src/test/java/de/cronn/testutils/h2/v2_1/H2PostgresModeUtilTest.java @@ -0,0 +1,4 @@ +package de.cronn.testutils.h2.v2_1; + +public class H2PostgresModeUtilTest extends de.cronn.testutils.h2.H2PostgresModeUtilTest { +} diff --git a/src/main/java/de/cronn/testutils/h2/H2Util.java b/src/main/java/de/cronn/testutils/h2/H2Util.java index 1f551fc..b9d2206 100644 --- a/src/main/java/de/cronn/testutils/h2/H2Util.java +++ b/src/main/java/de/cronn/testutils/h2/H2Util.java @@ -194,7 +194,7 @@ public static Set getTableNames(Connection con) throws SQLException { Set
tableNames = new LinkedHashSet<>(); String selectAllTables = "SELECT * FROM INFORMATION_SCHEMA.TABLES " + "WHERE TABLE_TYPE IN ('TABLE' /* h2 v1.4 */, 'BASE TABLE' /* h2 v2.x */) " + - "AND TABLE_SCHEMA <> 'INFORMATION_SCHEMA'"; + "AND TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'PG_CATALOG')"; try (PreparedStatement stmt = con.prepareStatement(selectAllTables); ResultSet tables = stmt.executeQuery()) { while (tables.next()) { String schema = tables.getString("TABLE_SCHEMA");