db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Korneliussen (JIRA)" <derby-...@db.apache.org>
Subject [jira] Updated: (DERBY-707) providing RowLocation for deleted+purged row to GenericConglomerateController causes nullpointerexception
Date Wed, 16 Nov 2005 14:51:33 GMT
     [ http://issues.apache.org/jira/browse/DERBY-707?page=all ]

Andreas Korneliussen updated DERBY-707:
---------------------------------------

    Attachment:     (was: DERBY-707.stat)

> providing RowLocation for deleted+purged row to GenericConglomerateController causes
nullpointerexception
> ---------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-707
>          URL: http://issues.apache.org/jira/browse/DERBY-707
>      Project: Derby
>         Type: Bug
>   Components: Store
>  Environment: Java 1.4
>     Reporter: Andreas Korneliussen
>     Assignee: Andreas Korneliussen
>     Priority: Minor

>
> To provide scrollable updatable resultsets, we will store the RowLocation for every row
in the ResultSet in a temporary table (backingstore hashtable).  The RowLocation is used to
reposition the cursor before an update.
> The problem is when the row for the RowLocation has been deleted and purged by another
transaction.  The update will then fail with a NullPointerException in GenericConglomerateController.replace(..):
> java.lang.NullPointerException
>         at org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.replace(GenericConglomerateController.java:465)
>         at org.apache.derby.impl.sql.execute.RowChangerImpl.updateRow(RowChangerImpl.java:516)
>         at org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:577)
>         at org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:276)
>         at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:368)
>         at org.apache.derby.impl.jdbc.EmbedResultSet.updateRow(EmbedResultSet.java:3256)

> It fails when checking if the row has been deleted (not purged) , because pos.current_page
is null:
>         if (pos.current_page.isDeletedAtSlot(pos.current_slot))
>         {
>             ret_val = false;
>         }
> The proposed fix is to use the return value from open_conglom.latchPage(..).  If it returns
false, the RowLocation is invalid (deleted+purged). 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message