5151import java .sql .ResultSet ;
5252import java .sql .RowIdLifetime ;
5353import java .sql .SQLException ;
54+ import java .sql .Statement ;
5455import java .sql .Types ;
5556import java .util .ArrayList ;
5657import java .util .Arrays ;
@@ -138,7 +139,6 @@ class BigQueryDatabaseMetaData implements DatabaseMetaData {
138139
139140 String URL ;
140141 BigQueryConnection connection ;
141- private final BigQueryStatement statement ;
142142 private final BigQuery bigquery ;
143143 private final int metadataFetchThreadCount ;
144144 private static final AtomicReference <String > parsedDriverVersion = new AtomicReference <>(null );
@@ -150,7 +150,6 @@ class BigQueryDatabaseMetaData implements DatabaseMetaData {
150150 BigQueryDatabaseMetaData (BigQueryConnection connection ) throws SQLException {
151151 this .URL = connection .getConnectionUrl ();
152152 this .connection = connection ;
153- this .statement = connection .createStatement ().unwrap (BigQueryStatement .class );
154153 this .bigquery = connection .getBigQuery ();
155154 this .metadataFetchThreadCount = connection .getMetadataFetchThreadCount ();
156155 loadDriverVersionProperties ();
@@ -944,8 +943,7 @@ public ResultSet getProcedures(
944943
945944 Thread fetcherThread = new Thread (procedureFetcher , "getProcedures-fetcher-" + catalog );
946945 BigQueryJsonResultSet resultSet =
947- BigQueryJsonResultSet .of (
948- resultSchema , -1 , queue , this .statement , new Thread [] {fetcherThread });
946+ BigQueryJsonResultSet .of (resultSchema , -1 , queue , null , new Thread [] {fetcherThread });
949947
950948 fetcherThread .start ();
951949 LOG .info ("Started background thread for getProcedures" );
@@ -1207,8 +1205,7 @@ public ResultSet getProcedureColumns(
12071205 Thread fetcherThread =
12081206 new Thread (procedureColumnFetcher , "getProcedureColumns-fetcher-" + catalog );
12091207 BigQueryJsonResultSet resultSet =
1210- BigQueryJsonResultSet .of (
1211- resultSchema , -1 , queue , this .statement , new Thread [] {fetcherThread });
1208+ BigQueryJsonResultSet .of (resultSchema , -1 , queue , null , new Thread [] {fetcherThread });
12121209
12131210 fetcherThread .start ();
12141211 LOG .info ("Started background thread for getProcedureColumns for catalog: " + catalog );
@@ -1869,8 +1866,7 @@ public ResultSet getTables(
18691866
18701867 Thread fetcherThread = new Thread (tableFetcher , "getTables-fetcher-" + effectiveCatalog );
18711868 BigQueryJsonResultSet resultSet =
1872- BigQueryJsonResultSet .of (
1873- resultSchema , -1 , queue , this .statement , new Thread [] {fetcherThread });
1869+ BigQueryJsonResultSet .of (resultSchema , -1 , queue , null , new Thread [] {fetcherThread });
18741870
18751871 fetcherThread .start ();
18761872 LOG .info ("Started background thread for getTables" );
@@ -2010,8 +2006,7 @@ public ResultSet getCatalogs() {
20102006 populateQueue (catalogRows , queue , schemaFields );
20112007 signalEndOfData (queue , schemaFields );
20122008
2013- return BigQueryJsonResultSet .of (
2014- catalogsSchema , catalogRows .size (), queue , this .statement , new Thread [0 ]);
2009+ return BigQueryJsonResultSet .of (catalogsSchema , catalogRows .size (), queue , null , new Thread [0 ]);
20152010 }
20162011
20172012 Schema defineGetCatalogsSchema () {
@@ -2043,7 +2038,7 @@ public ResultSet getTableTypes() {
20432038 signalEndOfData (queue , tableTypesSchema .getFields ());
20442039
20452040 return BigQueryJsonResultSet .of (
2046- tableTypesSchema , tableTypeRows .size (), queue , this . statement , new Thread [0 ]);
2041+ tableTypesSchema , tableTypeRows .size (), queue , null , new Thread [0 ]);
20472042 }
20482043
20492044 static Schema defineGetTableTypesSchema () {
@@ -2495,7 +2490,7 @@ public ResultSet getColumnPrivileges(
24952490 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
24962491 signalEndOfData (queue , resultSchemaFields );
24972492
2498- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
2493+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
24992494 }
25002495
25012496 Schema defineGetColumnPrivilegesSchema () {
@@ -2523,7 +2518,7 @@ public ResultSet getTablePrivileges(
25232518 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
25242519 signalEndOfData (queue , resultSchemaFields );
25252520
2526- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
2521+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
25272522 }
25282523
25292524 Schema defineGetTablePrivilegesSchema () {
@@ -2545,7 +2540,7 @@ public ResultSet getBestRowIdentifier(
25452540 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
25462541 signalEndOfData (queue , resultSchemaFields );
25472542
2548- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
2543+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
25492544 }
25502545
25512546 Schema defineGetBestRowIdentifierSchema () {
@@ -2595,7 +2590,7 @@ public ResultSet getVersionColumns(String catalog, String schema, String table)
25952590 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
25962591 signalEndOfData (queue , resultSchemaFields );
25972592
2598- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
2593+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
25992594 }
26002595
26012596 Schema defineGetVersionColumnsSchema () {
@@ -2637,8 +2632,10 @@ Schema defineGetVersionColumnsSchema() {
26372632 public ResultSet getPrimaryKeys (String catalog , String schema , String table ) throws SQLException {
26382633 String sql = readSqlFromFile (GET_PRIMARY_KEYS_SQL );
26392634 try {
2635+ Statement stmt = this .connection .createStatement ();
2636+ stmt .closeOnCompletion ();
26402637 String formattedSql = replaceSqlParameters (sql , catalog , schema , table );
2641- return this . statement .executeQuery (formattedSql );
2638+ return stmt .executeQuery (formattedSql );
26422639 } catch (SQLException e ) {
26432640 throw new BigQueryJdbcException (e );
26442641 }
@@ -2649,8 +2646,10 @@ public ResultSet getImportedKeys(String catalog, String schema, String table)
26492646 throws SQLException {
26502647 String sql = readSqlFromFile (GET_IMPORTED_KEYS_SQL );
26512648 try {
2649+ Statement stmt = this .connection .createStatement ();
2650+ stmt .closeOnCompletion ();
26522651 String formattedSql = replaceSqlParameters (sql , catalog , schema , table );
2653- return this . statement .executeQuery (formattedSql );
2652+ return stmt .executeQuery (formattedSql );
26542653 } catch (SQLException e ) {
26552654 throw new BigQueryJdbcException (e );
26562655 }
@@ -2661,8 +2660,10 @@ public ResultSet getExportedKeys(String catalog, String schema, String table)
26612660 throws SQLException {
26622661 String sql = readSqlFromFile (GET_EXPORTED_KEYS_SQL );
26632662 try {
2663+ Statement stmt = this .connection .createStatement ();
2664+ stmt .closeOnCompletion ();
26642665 String formattedSql = replaceSqlParameters (sql , catalog , schema , table );
2665- return this . statement .executeQuery (formattedSql );
2666+ return stmt .executeQuery (formattedSql );
26662667 } catch (SQLException e ) {
26672668 throw new BigQueryJdbcException (e );
26682669 }
@@ -2679,6 +2680,8 @@ public ResultSet getCrossReference(
26792680 throws SQLException {
26802681 String sql = readSqlFromFile (GET_CROSS_REFERENCE_SQL );
26812682 try {
2683+ Statement stmt = this .connection .createStatement ();
2684+ stmt .closeOnCompletion ();
26822685 String formattedSql =
26832686 replaceSqlParameters (
26842687 sql ,
@@ -2688,7 +2691,7 @@ public ResultSet getCrossReference(
26882691 foreignCatalog ,
26892692 foreignSchema ,
26902693 foreignTable );
2691- return this . statement .executeQuery (formattedSql );
2694+ return stmt .executeQuery (formattedSql );
26922695 } catch (SQLException e ) {
26932696 throw new BigQueryJdbcException (e );
26942697 }
@@ -2710,7 +2713,7 @@ public ResultSet getTypeInfo() {
27102713 populateQueue (typeInfoRows , queue , schemaFields );
27112714 signalEndOfData (queue , schemaFields );
27122715 return BigQueryJsonResultSet .of (
2713- typeInfoSchema , typeInfoRows .size (), queue , this . statement , new Thread [0 ]);
2716+ typeInfoSchema , typeInfoRows .size (), queue , null , new Thread [0 ]);
27142717 }
27152718
27162719 Schema defineGetTypeInfoSchema () {
@@ -3172,7 +3175,7 @@ public ResultSet getIndexInfo(
31723175 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
31733176 signalEndOfData (queue , resultSchemaFields );
31743177
3175- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
3178+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
31763179 }
31773180
31783181 Schema defineGetIndexInfoSchema () {
@@ -3303,7 +3306,7 @@ public ResultSet getUDTs(
33033306 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
33043307 signalEndOfData (queue , resultSchemaFields );
33053308
3306- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
3309+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
33073310 }
33083311
33093312 Schema defineGetUDTsSchema () {
@@ -3377,7 +3380,7 @@ public ResultSet getSuperTables(String catalog, String schemaPattern, String tab
33773380
33783381 signalEndOfData (queue , resultSchemaFields );
33793382
3380- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
3383+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
33813384 }
33823385
33833386 Schema defineGetSuperTablesSchema () {
@@ -3414,7 +3417,7 @@ public ResultSet getSuperTypes(String catalog, String schemaPattern, String type
34143417
34153418 signalEndOfData (queue , resultSchemaFields );
34163419
3417- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
3420+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
34183421 }
34193422
34203423 Schema defineGetSuperTypesSchema () {
@@ -3460,7 +3463,7 @@ public ResultSet getAttributes(
34603463 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
34613464 signalEndOfData (queue , resultSchemaFields );
34623465
3463- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
3466+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
34643467 }
34653468
34663469 Schema defineGetAttributesSchema () {
@@ -3705,8 +3708,7 @@ public ResultSet getSchemas(String catalog, String schemaPattern) {
37053708
37063709 Thread fetcherThread = new Thread (schemaFetcher , "getSchemas-fetcher-" + catalog );
37073710 BigQueryJsonResultSet resultSet =
3708- BigQueryJsonResultSet .of (
3709- resultSchema , -1 , queue , this .statement , new Thread [] {fetcherThread });
3711+ BigQueryJsonResultSet .of (resultSchema , -1 , queue , null , new Thread [] {fetcherThread });
37103712
37113713 fetcherThread .start ();
37123714 LOG .info ("Started background thread for getSchemas" );
@@ -3825,7 +3827,7 @@ public ResultSet getClientInfoProperties() {
38253827 signalEndOfData (queue , resultSchemaFields );
38263828 }
38273829 return BigQueryJsonResultSet .of (
3828- resultSchema , collectedResults .size (), queue , this . statement , new Thread [0 ]);
3830+ resultSchema , collectedResults .size (), queue , null , new Thread [0 ]);
38293831 }
38303832
38313833 Schema defineGetClientInfoPropertiesSchema () {
@@ -4000,8 +4002,7 @@ public ResultSet getFunctions(String catalog, String schemaPattern, String funct
40004002
40014003 Thread fetcherThread = new Thread (functionFetcher , "getFunctions-fetcher-" + catalog );
40024004 BigQueryJsonResultSet resultSet =
4003- BigQueryJsonResultSet .of (
4004- resultSchema , -1 , queue , this .statement , new Thread [] {fetcherThread });
4005+ BigQueryJsonResultSet .of (resultSchema , -1 , queue , null , new Thread [] {fetcherThread });
40054006
40064007 fetcherThread .start ();
40074008 LOG .info ("Started background thread for getFunctions" );
@@ -4255,8 +4256,7 @@ public ResultSet getFunctionColumns(
42554256 Thread fetcherThread =
42564257 new Thread (functionColumnFetcher , "getFunctionColumns-fetcher-" + catalog );
42574258 BigQueryJsonResultSet resultSet =
4258- BigQueryJsonResultSet .of (
4259- resultSchema , -1 , queue , this .statement , new Thread [] {fetcherThread });
4259+ BigQueryJsonResultSet .of (resultSchema , -1 , queue , null , new Thread [] {fetcherThread });
42604260
42614261 fetcherThread .start ();
42624262 LOG .info ("Started background thread for getFunctionColumns for catalog: " + catalog );
@@ -4663,7 +4663,7 @@ public ResultSet getPseudoColumns(
46634663 final BlockingQueue <BigQueryFieldValueListWrapper > queue = new LinkedBlockingQueue <>(1 );
46644664 signalEndOfData (queue , resultSchemaFields );
46654665
4666- return BigQueryJsonResultSet .of (resultSchema , 0 , queue , this . statement , null );
4666+ return BigQueryJsonResultSet .of (resultSchema , 0 , queue , null , null );
46674667 }
46684668
46694669 Schema defineGetPseudoColumnsSchema () {
0 commit comments