Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down Expand Up @@ -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"));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {
Expand All @@ -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
Expand Down Expand Up @@ -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");
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
Comment thread
keshavdandeva marked this conversation as resolved.

@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");
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -30,6 +31,7 @@
ITConnectionTest.class,
ITDatabaseMetadataTest.class,
ITDriverTest.class,
ITPcntTest.class,
ITResultSetMetadataTest.class
})
public class ITDriverAgnosticTests {}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -28,6 +29,7 @@
ITAuthTests.class,
ITBigQueryJDBCTest.class,
ITNightlyBigQueryTest.class,
ITOpenTelemetryTest.class
ITOpenTelemetryTest.class,
ITPcntTest.class
})
public class ITNightlyTests {}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -39,6 +40,7 @@
ITDatabaseMetadataTest.class,
ITDriverTest.class,
ITLocalSslValidationTest.class,
ITPcntTest.class,
Comment thread
keshavdandeva marked this conversation as resolved.
ITResultSetMetadataTest.class,
ITStatementTest.class
})
Expand Down
Loading