}
else if (rs instanceof DependentResultSet)
{
boolean instantaneousLocks = false;
DependentResultSet dsrs = (DependentResultSet) rs;
String startPosition = null;
String stopPosition = null;
String isolationLevel = null;
String lockString = null;
String lockRequestString = null;
switch (dsrs.isolationLevel)
{
case TransactionController.ISOLATION_SERIALIZABLE:
isolationLevel =
MessageService.getTextMessage(
SQLState.LANG_SERIALIZABLE);
break;
case TransactionController.ISOLATION_REPEATABLE_READ:
isolationLevel =
MessageService.getTextMessage(
SQLState.LANG_REPEATABLE_READ);
break;
case TransactionController.ISOLATION_READ_COMMITTED_NOHOLDLOCK:
instantaneousLocks = true;
//fall through
case TransactionController.ISOLATION_READ_COMMITTED:
isolationLevel = MessageService.getTextMessage(
SQLState.LANG_READ_COMMITTED);
break;
case TransactionController.ISOLATION_READ_UNCOMMITTED:
isolationLevel =
MessageService.getTextMessage(
SQLState.LANG_READ_UNCOMMITTED);
break;
}
if (dsrs.forUpdate)
{
lockString = MessageService.getTextMessage(
SQLState.LANG_EXCLUSIVE);
}
else
{
if (instantaneousLocks)
{
lockString = MessageService.getTextMessage(
SQLState.LANG_INSTANTANEOUS_SHARE);
}
else
{
lockString = MessageService.getTextMessage(
SQLState.LANG_SHARE);
}
}
switch (dsrs.lockMode)
{
case TransactionController.MODE_TABLE:
// RESOLVE: Not sure this will really work, as we
// are tacking together English words to make a phrase.
// Will this work in other languages?
lockRequestString = lockString + " " +
MessageService.getTextMessage(
SQLState.LANG_TABLE);
break;
case TransactionController.MODE_RECORD:
// RESOLVE: Not sure this will really work, as we
// are tacking together English words to make a phrase.
// Will this work in other languages?
lockRequestString = lockString + " " +
MessageService.getTextMessage(
SQLState.LANG_ROW);
break;
}
/* Start and stop position strings will be non-null
* if the dSRS has been closed. Otherwise, we go off
* and build the strings now.
*/
startPosition = dsrs.startPositionString;
if (startPosition == null)
{
startPosition = dsrs.printStartPosition();
}
stopPosition = dsrs.stopPositionString;
if (stopPosition == null)
{
stopPosition = dsrs.printStopPosition();
}
return new
RealTableScanStatistics(
dsrs.numOpens,
dsrs.rowsSeen,
dsrs.rowsFiltered,
dsrs.constructorTime,
dsrs.openTime,
dsrs.nextTime,
dsrs.closeTime,
dsrs.resultSetNumber,
dsrs.tableName,
null,
dsrs.indexName,
dsrs.isConstraint,
dsrs.printQualifiers(),
dsrs.getScanProperties(),
startPosition,
stopPosition,
isolationLevel,
lockRequestString,
dsrs.rowsPerRead,