From 104c2ffc5eda95d338e5999f7418149d7ded3006 Mon Sep 17 00:00:00 2001 From: kimminseok Date: Wed, 8 Oct 2025 00:40:15 +0900 Subject: [PATCH] Fix isBeforeFirst to return false for empty ResultSet --- .../java/src/main/java/tech/turso/core/TursoResultSet.java | 5 +++++ .../java/src/main/java/tech/turso/jdbc4/JDBC4ResultSet.java | 4 ++++ .../src/test/java/tech/turso/jdbc4/JDBC4ResultSetTest.java | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/bindings/java/src/main/java/tech/turso/core/TursoResultSet.java b/bindings/java/src/main/java/tech/turso/core/TursoResultSet.java index e880ae6b4..4cb6932d7 100644 --- a/bindings/java/src/main/java/tech/turso/core/TursoResultSet.java +++ b/bindings/java/src/main/java/tech/turso/core/TursoResultSet.java @@ -104,6 +104,11 @@ public final class TursoResultSet { return pastLastRow; } + /** Checks whether the result set is empty (has no rows). */ + public boolean isEmpty() { + return isEmptyResultSet; + } + /** Gets the current row number (0-based, 0 means before first row). */ public int getRow() { return row; diff --git a/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4ResultSet.java b/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4ResultSet.java index 245c864d0..6c3787b40 100644 --- a/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4ResultSet.java +++ b/bindings/java/src/main/java/tech/turso/jdbc4/JDBC4ResultSet.java @@ -413,6 +413,10 @@ public final class JDBC4ResultSet implements ResultSet, ResultSetMetaData { @Override public boolean isBeforeFirst() throws SQLException { + // Empty ResultSet should return false per JDBC spec + if (resultSet.isEmpty()) { + return false; + } return resultSet.isOpen() && resultSet.getRow() == 0 && !resultSet.isPastLastRow(); } diff --git a/bindings/java/src/test/java/tech/turso/jdbc4/JDBC4ResultSetTest.java b/bindings/java/src/test/java/tech/turso/jdbc4/JDBC4ResultSetTest.java index d83ef0959..537c627f4 100644 --- a/bindings/java/src/test/java/tech/turso/jdbc4/JDBC4ResultSetTest.java +++ b/bindings/java/src/test/java/tech/turso/jdbc4/JDBC4ResultSetTest.java @@ -675,7 +675,8 @@ class JDBC4ResultSetTest { ResultSet resultSet = stmt.executeQuery("SELECT * FROM test_empty"); // Before calling next() - assertTrue(resultSet.isBeforeFirst()); + // Empty ResultSet should return false for isBeforeFirst() + assertFalse(resultSet.isBeforeFirst()); assertFalse(resultSet.isAfterLast()); // After calling next() on empty ResultSet