db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-5280) Large batch of DDL in a database procedure dies on a transaction severity error.
Date Tue, 21 Jun 2011 14:05:47 GMT

    [ https://issues.apache.org/jira/browse/DERBY-5280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13052575#comment-13052575
] 

Knut Anders Hatlen commented on DERBY-5280:
-------------------------------------------

The cleanup in DERBY-5161 always pops the right statement context, since it specifies explicitly
which context to pop. However, there's a higher-level cleanup that detects statement severity
errors and pops the first statement context it finds if there is one. In this case, where
we have nested statement contexts, that causes the parent statement context to be popped.
I think it's this higher-level cleanup that's missing when preparing an internal statement
fails and that caused the problem seen in DERBY-5161.

A proper fix for DERBY-5161 might be to get this higher-level cleanup to kick in somehow also
for errors when preparing internal statements, or keeping the low-level cleanup added in DERBY-5161
and making the higher-level detect that cleanup has already happened. However, since DERBY-5161
is believed not to be possible after DERBY-5157, it's probably safer to just back out the
fix for DERBY-5161 than trying to devise an even more complex fix for something that's most
likely not broken.

> Large batch of DDL in a database procedure dies on a transaction severity error.
> --------------------------------------------------------------------------------
>
>                 Key: DERBY-5280
>                 URL: https://issues.apache.org/jira/browse/DERBY-5280
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.8.1.2, 10.9.0.0
>            Reporter: Rick Hillegas
>         Attachments: junit-repro.diff
>
>
> The batch of DDL run by the procedure which registers database metadata functions now
dies with the following error:
> ERROR 40XC0: Dead statement. This may be caused by catching a transaction severity error
inside this statement.
> A process of binary search shows that this problem was introduced by revision 1086920
as part of the work on DERBY-5161.
> The bug can be reproduced by compiling the DBMDWrapper class attached to DERBY-3973 and
then running the following script:
> connect 'jdbc:derby:memory:db;create=true'; 
> create procedure registerPublicStaticMethods( in connectionURL varchar( 200 ), in printSQL
boolean )
> language java parameter style java modifies sql data
> external name 'DBMDWrapper.registerPublicStaticMethods';
> call registerPublicStaticMethods( 'jdbc:default:connection', false );
> If you change the second argument to registerPublicStaticMethods to true, then you will
see all of the DDL being issued by the database procedure. The procedure runs fine in 10.7
but fails with this error in 10.8.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message