[ https://issues.apache.org/jira/browse/DERBY-6927?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hao Zhong updated DERBY-6927: ----------------------------- Summary: SystemProcedures.hasSchema does not close the resultset. (was: SystemProcedures.hasSchema doe not close the resultset.) > SystemProcedures.hasSchema does 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)