[ https://issues.apache.org/jira/browse/DERBY-3097?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bryan Pendleton updated DERBY-3097: ----------------------------------- Attachment: checkNumOpens.diff Attached is checkNumOpens.diff, a patch proposal. This patch: - removes the defensive "if" statement from getColumnFromRow - removes the code which caught and recovered from the NPE in TableScanResultSet.printPosition, and replaces it with code which checks numOpens == 0 and uses that to decide if the positioning information should be printed or not. - adds the script from Beetle 4736 as a new regression case in subqueryFlattening.sql - updates predicatePushdown.out to reflect the new positioning output. I think this patch is worthy of review; any feedback would be welcome. > Unnecessary if statement can be removed from BaseActivation.getColumnFromNow > ---------------------------------------------------------------------------- > > Key: DERBY-3097 > URL: https://issues.apache.org/jira/browse/DERBY-3097 > Project: Derby > Issue Type: Improvement > Components: SQL > Affects Versions: 10.4.0.0 > Reporter: Bryan Pendleton > Assignee: Bryan Pendleton > Priority: Minor > Attachments: checkNumOpens.diff > > > In BaseActivation.java there is the following code: > protected final DataValueDescriptor getColumnFromRow(int rsNumber, int colId) > throws StandardException { > if( row[rsNumber] == null) > { > /* This actually happens. NoPutResultSetImpl.clearOrderableCache > attempts to prefetch invariant values > * into a cache. This fails in some deeply nested joins. See > Beetle 4736 and 4880. > */ > return null; > } > return row[rsNumber].getColumn(colId); > } > During the investigation of DERBY-3033, I came to the conclusion that this > "if" statement is no longer necessary, and in fact is counter-productive, for > it makes diagnosing other problems harder by delaying the point at which data > structure problems are exposed as errors in the code. > This JIRA issue requests that this code be evaluated, to determine whether or > not it truly is necessary, and, if it is not necessary, suggests that it > should be removed, to result in simpler, clearer code. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.