close statement on all DbAdaptorTemplate paths
diff --git a/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java b/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java index 4eab821..ed37c18 100644 --- a/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java +++ b/src/com/google/enterprise/adaptor/examples/DbAdaptorTemplate.java
@@ -177,9 +177,19 @@ String query) throws SQLException { Statement st = conn.createStatement(); log.fine("about to query: " + query); - ResultSet rs = st.executeQuery(query); - log.fine("queried"); - return new StatementAndResult(st, rs); + try { + ResultSet rs = st.executeQuery(query); + log.fine("queried"); + return new StatementAndResult(st, rs); + } catch (SQLException sqle) { + try { + st.close(); // could mask originl sqle + } catch (SQLException maskingSqle) { + log.log(Level.WARNING, + "failed to close after query failure", maskingSqle); + } + throw sqle; + } } private static StatementAndResult getStreamFromDb(Connection conn, @@ -189,9 +199,19 @@ /* 2nd streaming flag */ java.sql.ResultSet.CONCUR_READ_ONLY); st.setFetchSize(/*3rd streaming flag*/ Integer.MIN_VALUE); log.fine("about to query for stream: " + query); - ResultSet rs = st.executeQuery(query); - log.fine("queried for stream"); - return new StatementAndResult(st, rs); + try { + ResultSet rs = st.executeQuery(query); + log.fine("queried for stream"); + return new StatementAndResult(st, rs); + } catch (SQLException sqle) { + try { + st.close(); // could mask originl sqle + } catch (SQLException maskingSqle) { + log.log(Level.WARNING, + "failed to close after query failure", maskingSqle); + } + throw sqle; + } } private static void tryClosingStatementAndResult(StatementAndResult strs) {