From 7125986413256f9af5fe32728c565e0f5fc7eac2 Mon Sep 17 00:00:00 2001 From: Magnus Persson <1431685+magnusp@users.noreply.github.com> Date: Fri, 23 Oct 2026 01:42:10 +0200 Subject: [PATCH] fix(jdbc): mark prepared executeQuery result set as requested --- .../libsql/jdbc/LibsqlPreparedStatement.java | 2 +- .../jdbc/LibsqlStatementLifecycleTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libsql-jdbc/src/main/java/com/github/magnusp/libsql/jdbc/LibsqlPreparedStatement.java b/libsql-jdbc/src/main/java/com/github/magnusp/libsql/jdbc/LibsqlPreparedStatement.java index d21452c..535a9c4 100644 --- a/libsql-jdbc/src/main/java/com/github/magnusp/libsql/jdbc/LibsqlPreparedStatement.java +++ b/libsql-jdbc/src/main/java/com/github/magnusp/libsql/jdbc/LibsqlPreparedStatement.java @@ -65,7 +65,7 @@ public ResultSet executeQuery() throws SQLException { throw new SQLException("Query does not return results"); } LibsqlResultSet resultSet = new LibsqlResultSet(this, result, sql, false); - assignResultSet(resultSet, false); + assignResultSet(resultSet, true); return resultSet; } diff --git a/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlStatementLifecycleTest.java b/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlStatementLifecycleTest.java index c3c0037..94747c2 100644 --- a/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlStatementLifecycleTest.java +++ b/libsql-jdbc/src/test/java/com/github/magnusp/libsql/jdbc/LibsqlStatementLifecycleTest.java @@ -37,6 +37,22 @@ void getResultSetAfterExecuteQueryThrowsResultSetAlreadyRequested() throws SQLEx } } + @Test + void preparedGetResultSetAfterExecuteQueryThrowsResultSetAlreadyRequested() + throws SQLException { + RecordingConnection connection = new RecordingConnection(ROWS); + LibsqlPreparedStatement statement = + new LibsqlPreparedStatement(connection, "select value from t"); + + try (statement) { + statement.executeQuery(); + + assertThatThrownBy(statement::getResultSet) + .isInstanceOf(SQLException.class) + .hasMessage("ResultSet already requested"); + } + } + @Test void getResultSetAfterExecuteReturnsTheResultOnceThenThrows() throws SQLException { RecordingConnection connection = new RecordingConnection(ROWS);