From 985801b5102687fc098a3c86c1890623449165ae Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Mon, 13 Apr 2026 16:59:23 -0400 Subject: [PATCH 1/2] fix(bqjdbc): Revert DatabaseMetaData field to be non-static in BigQueryConnection --- .../java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java index 53e32c45ea2d..e60f0874c446 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryConnection.java @@ -138,7 +138,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection { Long connectionPoolSize; Long listenerPoolSize; String partnerToken; - private static DatabaseMetaData databaseMetaData; + DatabaseMetaData databaseMetaData; BigQueryConnection(String url) throws IOException { this(url, DataSource.fromUrl(url)); From 70b69cd104f7c21e8347b1a1335c1bf66be679c7 Mon Sep 17 00:00:00 2001 From: Neenu1995 Date: Tue, 14 Apr 2026 09:33:03 -0400 Subject: [PATCH 2/2] make statement instance variable --- .../jdbc/BigQueryDatabaseMetaData.java | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java index c58d0232902b..f08e29215c1a 100644 --- a/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java +++ b/java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryDatabaseMetaData.java @@ -139,6 +139,7 @@ class BigQueryDatabaseMetaData implements DatabaseMetaData { String URL; BigQueryConnection connection; + Statement statement = null; private final BigQuery bigquery; private final int metadataFetchThreadCount; private static final AtomicReference parsedDriverVersion = new AtomicReference<>(null); @@ -147,7 +148,7 @@ class BigQueryDatabaseMetaData implements DatabaseMetaData { private static final AtomicReference parsedDriverMinorVersion = new AtomicReference<>(null); - BigQueryDatabaseMetaData(BigQueryConnection connection) throws SQLException { + BigQueryDatabaseMetaData(BigQueryConnection connection) { this.URL = connection.getConnectionUrl(); this.connection = connection; this.bigquery = connection.getBigQuery(); @@ -2632,10 +2633,11 @@ Schema defineGetVersionColumnsSchema() { public ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException { String sql = readSqlFromFile(GET_PRIMARY_KEYS_SQL); try { - Statement stmt = this.connection.createStatement(); - stmt.closeOnCompletion(); + if (this.statement == null) { + this.statement = this.connection.createStatement(); + } String formattedSql = replaceSqlParameters(sql, catalog, schema, table); - return stmt.executeQuery(formattedSql); + return this.statement.executeQuery(formattedSql); } catch (SQLException e) { throw new BigQueryJdbcException(e); } @@ -2646,10 +2648,11 @@ public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException { String sql = readSqlFromFile(GET_IMPORTED_KEYS_SQL); try { - Statement stmt = this.connection.createStatement(); - stmt.closeOnCompletion(); + if (this.statement == null) { + this.statement = this.connection.createStatement(); + } String formattedSql = replaceSqlParameters(sql, catalog, schema, table); - return stmt.executeQuery(formattedSql); + return this.statement.executeQuery(formattedSql); } catch (SQLException e) { throw new BigQueryJdbcException(e); } @@ -2660,10 +2663,11 @@ public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException { String sql = readSqlFromFile(GET_EXPORTED_KEYS_SQL); try { - Statement stmt = this.connection.createStatement(); - stmt.closeOnCompletion(); + if (this.statement == null) { + this.statement = this.connection.createStatement(); + } String formattedSql = replaceSqlParameters(sql, catalog, schema, table); - return stmt.executeQuery(formattedSql); + return this.statement.executeQuery(formattedSql); } catch (SQLException e) { throw new BigQueryJdbcException(e); } @@ -2680,8 +2684,9 @@ public ResultSet getCrossReference( throws SQLException { String sql = readSqlFromFile(GET_CROSS_REFERENCE_SQL); try { - Statement stmt = this.connection.createStatement(); - stmt.closeOnCompletion(); + if (this.statement == null) { + this.statement = this.connection.createStatement(); + } String formattedSql = replaceSqlParameters( sql, @@ -2691,7 +2696,7 @@ public ResultSet getCrossReference( foreignCatalog, foreignSchema, foreignTable); - return stmt.executeQuery(formattedSql); + return this.statement.executeQuery(formattedSql); } catch (SQLException e) { throw new BigQueryJdbcException(e); }