Fix jdbc code: Both PreparedStatements must be closed in any case Change-Id: Ie25aff78e9f74497a36faca97a38737c0d8f4b73
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_77.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_77.java index 472bc25..80639d6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_77.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_77.java
@@ -199,51 +199,40 @@ static LegacyLabelTypes getLegacyTypes(ReviewDb db) throws SQLException { List<LegacyLabelType> types = Lists.newArrayListWithCapacity(2); - Statement catStmt = null; - PreparedStatement valStmt = null; - ResultSet catRs = null; + Statement catStmt = ((JdbcSchema) db).getConnection().createStatement(); try { - catStmt = ((JdbcSchema) db).getConnection().createStatement(); - catRs = catStmt.executeQuery( + ResultSet catRs = catStmt.executeQuery( "SELECT category_id, name, abbreviated_name, function_name, " + " copy_min_score" + " FROM approval_categories" + " ORDER BY position, name"); - valStmt = ((JdbcSchema) db).getConnection().prepareStatement( - "SELECT value, name" - + " FROM approval_category_values" - + " WHERE category_id = ?"); - while (catRs.next()) { - String id = catRs.getString("category_id"); - valStmt.setString(1, id); - List<LabelValue> values = Lists.newArrayListWithCapacity(5); - ResultSet valRs = valStmt.executeQuery(); - try { + PreparedStatement valStmt = ((JdbcSchema) db).getConnection().prepareStatement( + "SELECT value, name" + + " FROM approval_category_values" + + " WHERE category_id = ?"); + try { + while (catRs.next()) { + String id = catRs.getString("category_id"); + valStmt.setString(1, id); + List<LabelValue> values = Lists.newArrayListWithCapacity(5); + ResultSet valRs = valStmt.executeQuery(); while (valRs.next()) { values.add(new LabelValue( valRs.getShort("value"), valRs.getString("name"))); } - } finally { - valRs.close(); + LegacyLabelType type = + new LegacyLabelType(getLabelName(catRs.getString("name")), values); + type.setId(id); + type.setAbbreviation(catRs.getString("abbreviated_name")); + type.setFunctionName(catRs.getString("function_name")); + type.setCopyMinScore("Y".equals(catRs.getString("copy_min_score"))); + types.add(type); } - LegacyLabelType type = - new LegacyLabelType(getLabelName(catRs.getString("name")), values); - type.setId(id); - type.setAbbreviation(catRs.getString("abbreviated_name")); - type.setFunctionName(catRs.getString("function_name")); - type.setCopyMinScore("Y".equals(catRs.getString("copy_min_score"))); - types.add(type); - } - } finally { - if (valStmt != null) { + } finally { valStmt.close(); } - if (catRs != null) { - catRs.close(); - } - if (catStmt != null) { - catStmt.close(); - } + } finally { + catStmt.close(); } return new LegacyLabelTypes(types); }