[ 
https://issues.apache.org/jira/browse/DERBY-4334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tiago R. Espinha updated DERBY-4334:
------------------------------------

    Attachment: utilXid.java
                ReproEmbeddedDerby4334.java

Attaching the repro.

> Invoking certain methods on PreparedStatements after the underlying 
> connection changed forces repreparing
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4334
>                 URL: https://issues.apache.org/jira/browse/DERBY-4334
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.6.0.0
>            Reporter: Tiago R. Espinha
>         Attachments: ReproEmbeddedDerby4334.java, utilXid.java
>
>
> Whenever we invoke methods like isClosed() or getMetaData() on prepared or 
> callable statements after the underlying connection changed, these methods 
> will try to reprepare the statement. This becomes an issue if in the 
> meanwhile, the query became obsolete (e.g. querying a table that was dropped 
> in the meanwhile).
> For example, if we start a transaction and prepare a statement with "SELECT * 
> FROM FOO;" then drop FOO with a parallel regular connection and try to invoke 
> the said methods on the statement, a repreparement will be attempted. Since 
> FOO no longer exists, it will throw an exception.
> I fixed this issue on DERBY-4310 for the .close() calls on Prepared and 
> Callable statements, but this will require more extensive work to convert the 
> remaining methods that try to do a getRealStatement() on the 
> XAStatementControl. I will be attaching a repro that pops this issue with the 
> isClosed() call.
> The approach I used in DERBY-4310 was to add a couple of methods to 
> XAStatementControl that act directly on the real statement object and close 
> them right away, without attempting to reprepare.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to