Perhaps this ok, but seems odd to me, just double checking...
ScrollInsensitiveResultSet around line 321
If the row hasn't been seen yet, if scans rows till it finds the row
which is fine,
then once found, if the result is *found*, it looks it up again in the
hashtable which seems odd
if (row > 0)
{
// position is from the start of the result set
if (row <= positionInSource)
{
// We've already seen the row before
return getRowFromHashTable(row);
}
/* We haven't seen the row yet, scan until we find
* it or we get to the end.
*/
int diff = row - positionInSource;
ExecRow result = null;
while (diff > 0)
{
if ((result = getNextRowFromSource()) != null)
{
diff--;
}
else
{
break;
}
}
*if (result != null) {
result = getRowFromHashTable(row);
}*
currentRow = result;
return result;
}