@@ -174,6 +174,11 @@ public void testStatementExecuteUsesPreparedProtocolForQuery() throws SQLExcepti
174174 .getCommandTypeCounter ()
175175 .getOrDefault (MockFlightSqlProducer .COMMAND_STATEMENT_QUERY , 0 ),
176176 is (0 ));
177+ assertThat (
178+ PRODUCER
179+ .getActionTypeCounter ()
180+ .getOrDefault (FlightSqlUtils .FLIGHT_SQL_CLOSE_PREPARED_STATEMENT .getType (), 0 ),
181+ is (1 ));
177182 }
178183
179184 @ Test
@@ -216,6 +221,16 @@ public void testStatementExecuteUsesPreparedProtocolForUpdate() throws SQLExcept
216221 .getCommandTypeCounter ()
217222 .getOrDefault (MockFlightSqlProducer .COMMAND_PREPARED_STATEMENT_UPDATE , 0 ),
218223 is (1 ));
224+ assertThat (
225+ PRODUCER
226+ .getCommandTypeCounter ()
227+ .getOrDefault (MockFlightSqlProducer .COMMAND_STATEMENT_UPDATE , 0 ),
228+ is (0 ));
229+ assertThat (
230+ PRODUCER
231+ .getActionTypeCounter ()
232+ .getOrDefault (FlightSqlUtils .FLIGHT_SQL_CLOSE_PREPARED_STATEMENT .getType (), 0 ),
233+ is (1 ));
219234 }
220235
221236 @ Test
@@ -273,6 +288,60 @@ public void testStatementExecuteUpdateThenExecuteQueryUsesStatementProtocol()
273288 is (1 ));
274289 }
275290
291+ @ Test
292+ public void testStatementExecuteQueryThenExecuteUsesPreparedProtocol () throws SQLException {
293+ try (Statement statement = connection .createStatement ()) {
294+ try (ResultSet resultSet = statement .executeQuery (SELECT_QUERY )) {
295+ assertTrue (resultSet .next ());
296+ }
297+ assertThat (statement .execute (SELECT_QUERY ), is (true ));
298+ try (ResultSet resultSet = statement .getResultSet ()) {
299+ assertTrue (resultSet .next ());
300+ }
301+ }
302+
303+ assertThat (
304+ PRODUCER
305+ .getCommandTypeCounter ()
306+ .getOrDefault (MockFlightSqlProducer .COMMAND_STATEMENT_QUERY , 0 ),
307+ is (1 ));
308+ assertThat (
309+ PRODUCER
310+ .getActionTypeCounter ()
311+ .getOrDefault (FlightSqlUtils .FLIGHT_SQL_CREATE_PREPARED_STATEMENT .getType (), 0 ),
312+ is (1 ));
313+ assertThat (
314+ PRODUCER
315+ .getCommandTypeCounter ()
316+ .getOrDefault (MockFlightSqlProducer .COMMAND_PREPARED_STATEMENT_QUERY , 0 ),
317+ is (1 ));
318+ }
319+
320+ @ Test
321+ public void testStatementExecuteUpdateThenExecuteUsesPreparedProtocol () throws SQLException {
322+ try (Statement statement = connection .createStatement ()) {
323+ assertThat (statement .executeUpdate (UPDATE_QUERY ), is (1 ));
324+ assertThat (statement .execute (UPDATE_QUERY ), is (false ));
325+ assertThat (statement .getUpdateCount (), is (1 ));
326+ }
327+
328+ assertThat (
329+ PRODUCER
330+ .getCommandTypeCounter ()
331+ .getOrDefault (MockFlightSqlProducer .COMMAND_STATEMENT_UPDATE , 0 ),
332+ is (1 ));
333+ assertThat (
334+ PRODUCER
335+ .getActionTypeCounter ()
336+ .getOrDefault (FlightSqlUtils .FLIGHT_SQL_CREATE_PREPARED_STATEMENT .getType (), 0 ),
337+ is (1 ));
338+ assertThat (
339+ PRODUCER
340+ .getCommandTypeCounter ()
341+ .getOrDefault (MockFlightSqlProducer .COMMAND_PREPARED_STATEMENT_UPDATE , 0 ),
342+ is (1 ));
343+ }
344+
276345 @ Test
277346 public void testPreparedStatementExecuteQueryUsesPreparedProtocol () throws SQLException {
278347 try (PreparedStatement statement = connection .prepareStatement (SELECT_QUERY );
@@ -339,6 +408,11 @@ public void testPreparedStatementExecuteUpdateUsesPreparedProtocol() throws SQLE
339408 .getCommandTypeCounter ()
340409 .getOrDefault (MockFlightSqlProducer .COMMAND_PREPARED_STATEMENT_UPDATE , 0 ),
341410 is (1 ));
411+ assertThat (
412+ PRODUCER
413+ .getCommandTypeCounter ()
414+ .getOrDefault (MockFlightSqlProducer .COMMAND_STATEMENT_UPDATE , 0 ),
415+ is (0 ));
342416 }
343417
344418 @ Test
@@ -358,6 +432,11 @@ public void testPreparedStatementExecuteUsesPreparedProtocolForUpdate() throws S
358432 .getCommandTypeCounter ()
359433 .getOrDefault (MockFlightSqlProducer .COMMAND_PREPARED_STATEMENT_UPDATE , 0 ),
360434 is (1 ));
435+ assertThat (
436+ PRODUCER
437+ .getCommandTypeCounter ()
438+ .getOrDefault (MockFlightSqlProducer .COMMAND_STATEMENT_UPDATE , 0 ),
439+ is (0 ));
361440 }
362441
363442 @ Test
0 commit comments