2020import java .util .Arrays ;
2121import java .util .Collections ;
2222import java .util .List ;
23+ import java .util .UUID ;
2324import java .util .concurrent .TimeUnit ;
2425
2526public class StatementImpl implements Statement , JdbcV2Wrapper {
@@ -143,6 +144,13 @@ public ResultSetImpl executeQuery(String sql, QuerySettings settings) throws SQL
143144 checkClosed ();
144145 QuerySettings mergedSettings = QuerySettings .merge (connection .getDefaultQuerySettings (), settings );
145146
147+ if (settings .getQueryId () != null ) {
148+ lastQueryId = settings .getQueryId ();
149+ } else {
150+ lastQueryId = UUID .randomUUID ().toString ();
151+ settings .setQueryId (lastQueryId );
152+ }
153+
146154 try {
147155 lastSql = parseJdbcEscapeSyntax (sql );
148156 QueryResponse response ;
@@ -166,7 +174,6 @@ public ResultSetImpl executeQuery(String sql, QuerySettings settings) throws SQL
166174 }
167175 currentResultSet = new ResultSetImpl (this , response , reader );
168176 metrics = response .getMetrics ();
169- lastQueryId = response .getQueryId ();
170177 } catch (Exception e ) {
171178 throw ExceptionUtils .toSqlState (e );
172179 }
@@ -190,6 +197,13 @@ public int executeUpdate(String sql, QuerySettings settings) throws SQLException
190197
191198 QuerySettings mergedSettings = QuerySettings .merge (connection .getDefaultQuerySettings (), settings );
192199
200+ if (settings .getQueryId () != null ) {
201+ lastQueryId = settings .getQueryId ();
202+ } else {
203+ lastQueryId = UUID .randomUUID ().toString ();
204+ settings .setQueryId (lastQueryId );
205+ }
206+
193207 lastSql = parseJdbcEscapeSyntax (sql );
194208 try (QueryResponse response = queryTimeout == 0 ? connection .client .query (lastSql , mergedSettings ).get ()
195209 : connection .client .query (lastSql , mergedSettings ).get (queryTimeout , TimeUnit .SECONDS )) {
0 commit comments