[ http://issues.apache.org/jira/browse/DERBY-707?page=all ] Bernt M. Johnsen resolved DERBY-707: ------------------------------------
Fix Version: 10.2.0.0 Resolution: Fixed > 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 > Fix For: 10.2.0.0 > Attachments: DERBY-707.diff, DERBY-707.stat > > 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