[
https://issues.apache.org/jira/browse/DERBY-6927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15937582#comment-15937582
]
Hao Zhong commented on DERBY-6927:
----------------------------------
Indeed, it's my research project. It infers bug signatures from your past
fixes, and uses inferred bug signatures to detect new bugs.
My tool reads your past fixes and try to understand what happens when repairing
bugs. For your questions, it sounds like that I read your source code to locate
the buggy code.
Hope that my work can be useful to you.
> SystemProcedures.hasSchema can fail to 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
> Attachments: derby.patch
>
>
> 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)