Fixing jdbc code: correct PreparedStatement closing
Change-Id: I4c1f8079bdab7181069f3784fb09029a6748a3db
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_57.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_57.java
index bf488e3..e02feaa 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_57.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_57.java
@@ -43,6 +43,7 @@
import java.io.IOException;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collections;
@@ -101,7 +102,17 @@
// Prepare the account_group_includes query
PreparedStatement stmt = ((JdbcSchema) db).getConnection().
- prepareStatement("SELECT * FROM account_group_includes WHERE group_id = ?");
+ prepareStatement("SELECT COUNT(1) FROM account_group_includes WHERE group_id = ?");
+ boolean isAccountGroupEmpty = false;
+ try {
+ stmt.setInt(1, sc.batchUsersGroupId.get());
+ ResultSet rs = stmt.executeQuery();
+ if (rs.next()) {
+ isAccountGroupEmpty = rs.getInt(1) == 0;
+ }
+ } finally {
+ stmt.close();
+ }
for (String name : createGroupList) {
AccountGroup.NameKey key = new AccountGroup.NameKey(name);
@@ -125,10 +136,10 @@
}
AccountGroup batch = db.accountGroups().get(sc.batchUsersGroupId);
- stmt.setInt(1, sc.batchUsersGroupId.get());
+
if (batch != null
&& db.accountGroupMembers().byGroup(sc.batchUsersGroupId).toList().isEmpty()
- && stmt.executeQuery().first() != false) {
+ && !isAccountGroupEmpty) {
// If the batch user group is not used, delete it.
//
db.accountGroups().delete(Collections.singleton(batch));