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

Dag H. Wanvik edited comment on DERBY-4330 at 8/4/09 10:41 AM:
---------------------------------------------------------------

As I suspected, there were more result sets that had to be fixed for this 
weakness.
I upload a new patch, derby-4330b, which fixes the following result sets:

DistinctGroupedAggregateResultSet
DistinctScalarAggregateResultSet
GroupedAggregateResultSet
JoinResultSet
SetOpResultSet
SortResultSet
UnionResultSet

What they have in common, is that their openCore methods may fail without 
rolling back any successful opening of underlying result sets. The new code 
adds rollback by closing the underlying result sets before openCore of the 
parent is allowed to fail.

The initial patch's fix to JoinResultSet is remade to be more targeted.

The patch also adds test cases for these to  
ResultSetsFromPreparedStatementTest.

Regressions ran ok on an an earlier version of the patch, running them over 
again now. Please review.



      was (Author: dagw):
    As I suspected, there were more result sets that had to be fixed for this 
weakness.
I upload a new patch, derby-4330b, which fixes the following result sets:

DistinctScalarAggregateResultSet
GroupedAggregateResultSet
JoinResultSet
SetOpResultSet
SortResultSet
UnionResultSet

What they have in common, is that their openCore methods may fail without 
rolling back any successful opening of underlying result sets. The new code 
adds rollback by closing the underlying result sets before openCore of the 
parent is allowed to fail.

The initial patch's fix to JoinResultSet is remade to be more targeted.

The patch also adds test cases for these to  
ResultSetsFromPreparedStatementTest.

Regressions ran ok on an an earlier version of the patch, running them over 
again now. Please review.


  
> NullPointerException or assert failure when re-executing PreparedStatement 
> after lock timeout
> ---------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4330
>                 URL: https://issues.apache.org/jira/browse/DERBY-4330
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.3.1.4, 10.3.2.1, 10.3.3.0, 10.4.1.3, 10.4.2.0, 
> 10.5.1.1, 10.5.2.0, 10.6.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Dag H. Wanvik
>         Attachments: derby-4330a.diff, derby-4330b.diff, derby-4330b.stat, 
> repro-intersect.sql, repro-union.sql, repro.sql
>
>
> I came across a query that failed with a NullPointerException (insane jars) 
> or an assert failure (sane jars) when a PreparedStatement was re-executed 
> after a lock timeout. I'm able to reproduce this on 10.3.1.4 and later. 
> 10.2.2.0 and earlier don't fail. Another fallout from DERBY-827? I've also 
> seen other manifestations of the problem, apparently depending on the actual 
> rows in the tables, including "No current connection" and "The heap container 
> with container id Container(0, 1120) is closed".
> Stack trace for the assert failure:
> org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED 
> JoinResultSet already open
>         at 
> org.apache.derby.shared.common.sanity.SanityManager.ASSERT(SanityManager.java:120)
>         at 
> org.apache.derby.impl.sql.execute.JoinResultSet.openCore(JoinResultSet.java:144)
>         at 
> org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(ProjectRestrictResultSet.java:169)
>         at 
> org.apache.derby.impl.sql.execute.SortResultSet.openCore(SortResultSet.java:248)
>         at 
> org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(ProjectRestrictResultSet.java:169)
>         at 
> org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(BasicNoPutResultSetImpl.java:248)
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:416)
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:297)
>         at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1235)
>         at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1675)
>         at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java:1330)

-- 
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