diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java index a068e5eda895..ecd820f75242 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITConnectionTest.java @@ -35,7 +35,6 @@ import java.sql.Statement; import java.util.Properties; import java.util.Random; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Tag; @@ -48,21 +47,12 @@ public class ITConnectionTest { static Random random = new Random(); static int randomNumber = random.nextInt(999); private static final String TABLE_NAME = "JDBC_CONNECTION_TEST_TABLE" + randomNumber; - private static final String PCNT_TABLE_NAME = "PCNT_CONN_TEST_TABLE_" + randomNumber; @BeforeAll public static void beforeClass() throws InterruptedException { DATASET = ITBase.getSharedDataset(); ITBase.setUpTable(DATASET, TABLE_NAME); ITBase.setUpProcedure(DATASET, TABLE_NAME); - ITBase.setUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME); - } - - @AfterAll - public static void afterClass() throws InterruptedException { - // Shared dataset cleanup is handled by ITBase shutdown hook. - // Clean up dynamic table created in the shared PCNT namespace. - ITBase.cleanUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME); } @Test @@ -455,46 +445,4 @@ public void testDefaultDatasetColonDelimiter() throws SQLException { } } } - - @Test - public void testPcntDefaultDataset2TierNamespace() throws SQLException { - String urlWithPcnt = ITBase.connectionUrl + ";DefaultDataset=" + ITBase.PCNT_SCHEMA + ";"; - try (Connection connection = DriverManager.getConnection(urlWithPcnt)) { - assertNotNull(connection); - assertFalse(connection.isClosed()); - try (Statement stmt = connection.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) { - assertTrue(rs.next()); - assertEquals(1, rs.getInt("id")); - assertEquals("Alice", rs.getString("name")); - assertTrue(rs.next()); - assertEquals(2, rs.getInt("id")); - assertEquals("Bob", rs.getString("name")); - } - } - } - - @Test - public void testPcntDefaultDataset3TierNamespace() throws SQLException { - String urlWithPcnt = - ITBase.connectionUrl - + ";DefaultDataset=" - + DEFAULT_CATALOG - + ":" - + ITBase.PCNT_SCHEMA - + ";"; - try (Connection connection = DriverManager.getConnection(urlWithPcnt)) { - assertNotNull(connection); - assertFalse(connection.isClosed()); - try (Statement stmt = connection.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) { - assertTrue(rs.next()); - assertEquals(1, rs.getInt("id")); - assertEquals("Alice", rs.getString("name")); - assertTrue(rs.next()); - assertEquals(2, rs.getInt("id")); - assertEquals("Bob", rs.getString("name")); - } - } - } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java index 80d2e0cf4529..34014e110018 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITDatabaseMetadataTest.java @@ -41,7 +41,6 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @@ -62,7 +61,6 @@ public class ITDatabaseMetadataTest extends ITBase { Pattern.compile("^(\\d+)\\.(\\d+)(?:\\.\\d+)+\\s*.*"); private static final String DEFAULT_CATALOG = ServiceOptions.getDefaultProjectId(); private static final String TABLE_NAME = "JDBC_DBMETADATA_TEST_TABLE" + randomNumber; - private static final String PCNT_TABLE_NAME = "PCNT_METADATA_TEST_TABLE_" + randomNumber; @BeforeAll public static void beforeClass() throws InterruptedException, SQLException { @@ -71,14 +69,6 @@ public static void beforeClass() throws InterruptedException, SQLException { CONSTRAINTS_DATASET = ITBase.getSharedDataset(); // Set up Dataset ITBase.setUpTable(DATASET, TABLE_NAME); - ITBase.setUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME); - } - - @AfterAll - public static void afterClass() throws SQLException, InterruptedException { - // Shared dataset cleanup is handled by ITBase shutdown hook. - // Clean up dynamic table created in the shared PCNT namespace. - ITBase.cleanUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME); } @Disabled @@ -1821,73 +1811,4 @@ protected void verifyGetColumns(Connection connection, DatabaseMetaData metaData assertTrue(count > 0); connection.createStatement().execute("drop table if exists " + dataset + "." + jdbctesttable); } - - @Test - public void testDatabaseMetadataGetSchemasPcnt() throws SQLException { - try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) { - DatabaseMetaData metaData = connection.getMetaData(); - try (ResultSet rs = metaData.getSchemas(DEFAULT_CATALOG, PCNT_SCHEMA)) { - assertNotNull(rs, "ResultSet from getSchemas() should not be null"); - assertTrue( - rs.next(), "Expected PCNT schema " + PCNT_SCHEMA + " in catalog " + DEFAULT_CATALOG); - assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM")); - assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CATALOG")); - } - } - } - - @Test - public void testDatabaseMetadataGetTablesPcnt() throws SQLException { - try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) { - DatabaseMetaData metaData = connection.getMetaData(); - try (ResultSet rs = metaData.getTables(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, null)) { - assertNotNull(rs, "ResultSet from getTables() should not be null"); - assertTrue( - rs.next(), "Expected PCNT table " + PCNT_TABLE_NAME + " under schema " + PCNT_SCHEMA); - assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT")); - assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM")); - assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME")); - assertEquals("TABLE", rs.getString("TABLE_TYPE")); - } - } - } - - @Test - public void testDatabaseMetadataGetColumnsPcnt() throws SQLException { - try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) { - DatabaseMetaData metaData = connection.getMetaData(); - try (ResultSet rs = metaData.getColumns(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, "%")) { - assertNotNull(rs, "ResultSet from getColumns() should not be null"); - int columnCount = 0; - boolean foundId = false; - boolean foundName = false; - while (rs.next()) { - columnCount++; - assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT")); - assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM")); - assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME")); - String colName = rs.getString("COLUMN_NAME"); - String typeName = rs.getString("TYPE_NAME"); - if ("id".equals(colName)) { - foundId = true; - assertEquals(1, rs.getInt("ORDINAL_POSITION")); - assertTrue( - typeName.equalsIgnoreCase("INT64") - || typeName.equalsIgnoreCase("INTEGER") - || typeName.equalsIgnoreCase("BIGINT")); - } else if ("name".equals(colName)) { - foundName = true; - assertEquals(2, rs.getInt("ORDINAL_POSITION")); - assertTrue( - typeName.equalsIgnoreCase("STRING") - || typeName.equalsIgnoreCase("NVARCHAR") - || typeName.equalsIgnoreCase("VARCHAR")); - } - } - assertEquals(2, columnCount, "Expected 2 columns in PCNT table " + PCNT_TABLE_NAME); - assertTrue(foundId, "Expected column 'id' in PCNT table"); - assertTrue(foundName, "Expected column 'name' in PCNT table"); - } - } - } } diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITPcntTest.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITPcntTest.java new file mode 100644 index 000000000000..1cc5408a9be9 --- /dev/null +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/ITPcntTest.java @@ -0,0 +1,163 @@ +/* + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.bigquery.jdbc.it; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Random; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +@Tag("disable_tpc") +public class ITPcntTest extends ITBase { + + private static final Random random = new Random(); + private static final int randomNumber = random.nextInt(9999); + private static final String PCNT_TABLE_NAME = "PCNT_TEST_TABLE_" + randomNumber; + + @BeforeAll + public static void beforeClass() throws InterruptedException { + ITBase.setUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME); + } + + @AfterAll + public static void afterClass() throws InterruptedException { + ITBase.cleanUpPcntTable(ITBase.PCNT_SCHEMA, PCNT_TABLE_NAME); + } + + @Test + public void testPcntDefaultDataset2TierNamespace() throws SQLException { + String urlWithPcnt = ITBase.connectionUrl + ";DefaultDataset=" + ITBase.PCNT_SCHEMA + ";"; + try (Connection connection = DriverManager.getConnection(urlWithPcnt)) { + assertNotNull(connection); + assertFalse(connection.isClosed()); + try (Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) { + assertTrue(rs.next()); + assertEquals(1, rs.getInt("id")); + assertEquals("Alice", rs.getString("name")); + assertTrue(rs.next()); + assertEquals(2, rs.getInt("id")); + assertEquals("Bob", rs.getString("name")); + } + } + } + + @Test + public void testPcntDefaultDataset3TierNamespace() throws SQLException { + String urlWithPcnt = + ITBase.connectionUrl + + ";DefaultDataset=" + + DEFAULT_CATALOG + + ":" + + ITBase.PCNT_SCHEMA + + ";"; + try (Connection connection = DriverManager.getConnection(urlWithPcnt)) { + assertNotNull(connection); + assertFalse(connection.isClosed()); + try (Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM " + PCNT_TABLE_NAME + " ORDER BY id")) { + assertTrue(rs.next()); + assertEquals(1, rs.getInt("id")); + assertEquals("Alice", rs.getString("name")); + assertTrue(rs.next()); + assertEquals(2, rs.getInt("id")); + assertEquals("Bob", rs.getString("name")); + } + } + } + + @Test + public void testDatabaseMetadataGetSchemasPcnt() throws SQLException { + try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) { + DatabaseMetaData metaData = connection.getMetaData(); + try (ResultSet rs = metaData.getSchemas(DEFAULT_CATALOG, PCNT_SCHEMA)) { + assertNotNull(rs, "ResultSet from getSchemas() should not be null"); + assertTrue( + rs.next(), "Expected PCNT schema " + PCNT_SCHEMA + " in catalog " + DEFAULT_CATALOG); + assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM")); + assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CATALOG")); + } + } + } + + @Test + public void testDatabaseMetadataGetTablesPcnt() throws SQLException { + try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) { + DatabaseMetaData metaData = connection.getMetaData(); + try (ResultSet rs = metaData.getTables(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, null)) { + assertNotNull(rs, "ResultSet from getTables() should not be null"); + assertTrue( + rs.next(), "Expected PCNT table " + PCNT_TABLE_NAME + " under schema " + PCNT_SCHEMA); + assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT")); + assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM")); + assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME")); + assertEquals("TABLE", rs.getString("TABLE_TYPE")); + } + } + } + + @Test + public void testDatabaseMetadataGetColumnsPcnt() throws SQLException { + try (Connection connection = DriverManager.getConnection(ITBase.connectionUrl)) { + DatabaseMetaData metaData = connection.getMetaData(); + try (ResultSet rs = metaData.getColumns(DEFAULT_CATALOG, PCNT_SCHEMA, PCNT_TABLE_NAME, "%")) { + assertNotNull(rs, "ResultSet from getColumns() should not be null"); + int columnCount = 0; + boolean foundId = false; + boolean foundName = false; + while (rs.next()) { + columnCount++; + assertEquals(DEFAULT_CATALOG, rs.getString("TABLE_CAT")); + assertEquals(PCNT_SCHEMA, rs.getString("TABLE_SCHEM")); + assertEquals(PCNT_TABLE_NAME, rs.getString("TABLE_NAME")); + String colName = rs.getString("COLUMN_NAME"); + String typeName = rs.getString("TYPE_NAME"); + if ("id".equals(colName)) { + foundId = true; + assertEquals(1, rs.getInt("ORDINAL_POSITION")); + assertTrue( + typeName.equalsIgnoreCase("INT64") + || typeName.equalsIgnoreCase("INTEGER") + || typeName.equalsIgnoreCase("BIGINT")); + } else if ("name".equals(colName)) { + foundName = true; + assertEquals(2, rs.getInt("ORDINAL_POSITION")); + assertTrue( + typeName.equalsIgnoreCase("STRING") + || typeName.equalsIgnoreCase("NVARCHAR") + || typeName.equalsIgnoreCase("VARCHAR")); + } + } + assertEquals(2, columnCount, "Expected 2 columns in PCNT table " + PCNT_TABLE_NAME); + assertTrue(foundId, "Expected column 'id' in PCNT table"); + assertTrue(foundName, "Expected column 'name' in PCNT table"); + } + } + } +} diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITDriverAgnosticTests.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITDriverAgnosticTests.java index 95239049edbc..8cd7501f386f 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITDriverAgnosticTests.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITDriverAgnosticTests.java @@ -20,6 +20,7 @@ import com.google.cloud.bigquery.jdbc.it.ITConnectionTest; import com.google.cloud.bigquery.jdbc.it.ITDatabaseMetadataTest; import com.google.cloud.bigquery.jdbc.it.ITDriverTest; +import com.google.cloud.bigquery.jdbc.it.ITPcntTest; import com.google.cloud.bigquery.jdbc.it.ITResultSetMetadataTest; import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; @@ -30,6 +31,7 @@ ITConnectionTest.class, ITDatabaseMetadataTest.class, ITDriverTest.class, + ITPcntTest.class, ITResultSetMetadataTest.class }) public class ITDriverAgnosticTests {} diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITNightlyTests.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITNightlyTests.java index 02fc96c17bad..053417db41ad 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITNightlyTests.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITNightlyTests.java @@ -20,6 +20,7 @@ import com.google.cloud.bigquery.jdbc.it.ITBigQueryJDBCTest; import com.google.cloud.bigquery.jdbc.it.ITNightlyBigQueryTest; import com.google.cloud.bigquery.jdbc.it.ITOpenTelemetryTest; +import com.google.cloud.bigquery.jdbc.it.ITPcntTest; import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; @@ -28,6 +29,7 @@ ITAuthTests.class, ITBigQueryJDBCTest.class, ITNightlyBigQueryTest.class, - ITOpenTelemetryTest.class + ITOpenTelemetryTest.class, + ITPcntTest.class }) public class ITNightlyTests {} diff --git a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java index 44e37f6888e2..481d5010b145 100644 --- a/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java +++ b/java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/it/suites/ITPresubmitTests.java @@ -24,6 +24,7 @@ import com.google.cloud.bigquery.jdbc.it.ITDatabaseMetadataTest; import com.google.cloud.bigquery.jdbc.it.ITDriverTest; import com.google.cloud.bigquery.jdbc.it.ITLocalSslValidationTest; +import com.google.cloud.bigquery.jdbc.it.ITPcntTest; import com.google.cloud.bigquery.jdbc.it.ITResultSetMetadataTest; import com.google.cloud.bigquery.jdbc.it.ITStatementTest; import org.junit.platform.suite.api.SelectClasses; @@ -39,6 +40,7 @@ ITDatabaseMetadataTest.class, ITDriverTest.class, ITLocalSslValidationTest.class, + ITPcntTest.class, ITResultSetMetadataTest.class, ITStatementTest.class })