Program: 80193
Project: 80193
Buggy source:
/** 
 * open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...
 * @exception StandardException thrown on failure to open
 */
public void openCore() throws StandardException {
  TransactionController tc;
  beginTime=getCurrentTimeMillis();
  if (SanityManager.DEBUG)   SanityManager.ASSERT(!isOpen,"String_Node_Str");
  tc=activation.getTransactionController();
  initIsolationLevel();
  if (startKeyGetter != null) {
    startPosition=(ExecIndexRow)startKeyGetter.invoke(activation);
    if (sameStartStopPosition) {
      stopPosition=startPosition;
    }
  }
  if (stopKeyGetter != null) {
    stopPosition=(ExecIndexRow)stopKeyGetter.invoke(activation);
  }
  if (skipScan(startPosition,stopPosition)) {
    ;
  }
 else   if (!hashtableBuilt) {
    DataValueDescriptor[] startPositionRow=startPosition == null ? null : startPosition.getRowArray();
    DataValueDescriptor[] stopPositionRow=stopPosition == null ? null : stopPosition.getRowArray();
    hashtable=tc.createBackingStoreHashtableFromScan(conglomId,(forUpdate ? TransactionController.OPENMODE_FORUPDATE : 0),lockMode,isolationLevel,accessedCols,startPositionRow,startSearchOperator,scanQualifiers,stopPositionRow,stopSearchOperator,-1,keyColumns,eliminateDuplicates,-1,maxCapacity,initialCapacity,loadFactor,runTimeStatisticsOn,skipNullKeyColumns);
    if (runTimeStatisticsOn) {
      hashtableSize=hashtable.size();
      if (scanProperties == null) {
        scanProperties=new Properties();
      }
      try {
        if (hashtable != null) {
          hashtable.getAllRuntimeStats(scanProperties);
        }
      }
 catch (      StandardException se) {
      }
    }
    hashtableBuilt=true;
    activation.informOfRowCount(this,(long)hashtableSize);
  }
  isOpen=true;
  resetProbeVariables();
  numOpens++;
  openTime+=getElapsedMillis(beginTime);
}

Fixed version (ground truth):
/** 
 * open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...
 * @exception StandardException thrown on failure to open
 */
public void openCore() throws StandardException {
  TransactionController tc;
  beginTime=getCurrentTimeMillis();
  if (SanityManager.DEBUG)   SanityManager.ASSERT(!isOpen,"String_Node_Str");
  tc=activation.getTransactionController();
  initIsolationLevel();
  if (startKeyGetter != null) {
    startPosition=(ExecIndexRow)startKeyGetter.invoke(activation);
    if (sameStartStopPosition) {
      stopPosition=startPosition;
    }
  }
  if (stopKeyGetter != null) {
    stopPosition=(ExecIndexRow)stopKeyGetter.invoke(activation);
  }
  if (skipScan(startPosition,stopPosition)) {
    ;
  }
 else   if (!hashtableBuilt) {
    DataValueDescriptor[] startPositionRow=startPosition == null ? null : startPosition.getRowArray();
    DataValueDescriptor[] stopPositionRow=stopPosition == null ? null : stopPosition.getRowArray();
    hashtable=tc.createBackingStoreHashtableFromScan(conglomId,(forUpdate ? TransactionController.OPENMODE_FORUPDATE : 0),lockMode,isolationLevel,accessedCols,startPositionRow,startSearchOperator,scanQualifiers,stopPositionRow,stopSearchOperator,-1,keyColumns,eliminateDuplicates,-1,maxCapacity,initialCapacity,loadFactor,runTimeStatisticsOn,skipNullKeyColumns,keepAfterCommit);
    if (runTimeStatisticsOn) {
      hashtableSize=hashtable.size();
      if (scanProperties == null) {
        scanProperties=new Properties();
      }
      try {
        if (hashtable != null) {
          hashtable.getAllRuntimeStats(scanProperties);
        }
      }
 catch (      StandardException se) {
      }
    }
    hashtableBuilt=true;
    activation.informOfRowCount(this,(long)hashtableSize);
  }
  isOpen=true;
  resetProbeVariables();
  numOpens++;
  openTime+=getElapsedMillis(beginTime);
}