Hao Zhong created DERBY-6927: -------------------------------- Summary: SystemProcedures.hasSchema doe not close the resultset. Key: DERBY-6927 URL: https://issues.apache.org/jira/browse/DERBY-6927 Project: Derby Issue Type: Bug Components: Services Affects Versions: 10.12.1.1 Reporter: Hao Zhong
The SystemProcedures.hasSchema method has the following code: {code:title=SystemProcedures.java|borderStyle=solid} ResultSet rs = conn.getMetaData().getSchemas(); boolean schemaFound = false; while (rs.next() && !schemaFound) schemaFound = schemaName.equals(rs.getString("TABLE_SCHEM")); rs.close(); {code} The while statement can throw exceptions, so the rs.close can never be executed. Indeed, DERBY-6297 fixed a similar bug. The buggy code is: {code:title=AccessDatabase.java|borderStyle=solid} boolean found=false; ResultSet result = conn.getMetaData().getSchemas(); while(result.next()){ if(result.getString(1).equals(schema)){ found=true; break; } } return found; {code} The fixed code ensures that result is closed: {code:title=AccessDatabase.java|borderStyle=solid} ResultSet result = conn.getMetaData().getSchemas(); try { while (result.next()) { if (result.getString(1).equals(schema)) { // Found it! return true; } } } finally { result.close(); } // Didn't find the schema. return false; {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)