📄 realresultsetstatisticsfactory.java
字号:
ors.closeTime, ors.resultSetNumber, ors.subqueryNumber, ors.pointOfAttachment, ors.optimizerEstimatedRowCount, ors.optimizerEstimatedCost, getResultSetStatistics(ors.source) ); } else if (rs instanceof NormalizeResultSet) { NormalizeResultSet nrs = (NormalizeResultSet) rs; return new RealNormalizeResultSetStatistics( nrs.numOpens, nrs.rowsSeen, nrs.rowsFiltered, nrs.constructorTime, nrs.openTime, nrs.nextTime, nrs.closeTime, nrs.resultSetNumber, nrs.optimizerEstimatedRowCount, nrs.optimizerEstimatedCost, getResultSetStatistics(nrs.source) ); } else if (rs instanceof MaterializedResultSet) { MaterializedResultSet mrs = (MaterializedResultSet) rs; return new RealMaterializedResultSetStatistics( mrs.numOpens, mrs.rowsSeen, mrs.rowsFiltered, mrs.constructorTime, mrs.openTime, mrs.nextTime, mrs.closeTime, mrs.createTCTime, mrs.fetchTCTime, mrs.resultSetNumber, mrs.optimizerEstimatedRowCount, mrs.optimizerEstimatedCost, getResultSetStatistics(mrs.source) ); } else if (rs instanceof ScrollInsensitiveResultSet) { ScrollInsensitiveResultSet sirs = (ScrollInsensitiveResultSet) rs; return new RealScrollInsensitiveResultSetStatistics( sirs.numOpens, sirs.rowsSeen, sirs.rowsFiltered, sirs.constructorTime, sirs.openTime, sirs.nextTime, sirs.closeTime, sirs.numFromHashTable, sirs.numToHashTable, sirs.resultSetNumber, sirs.optimizerEstimatedRowCount, sirs.optimizerEstimatedCost, getResultSetStatistics(sirs.source) ); } else if (rs instanceof CurrentOfResultSet) { CurrentOfResultSet cors = (CurrentOfResultSet) rs; return new RealCurrentOfStatistics( cors.numOpens, cors.rowsSeen, cors.rowsFiltered, cors.constructorTime, cors.openTime, cors.nextTime, cors.closeTime, cors.resultSetNumber ); } else if (rs instanceof HashScanResultSet) { boolean instantaneousLocks = false; HashScanResultSet hsrs = (HashScanResultSet) rs; String startPosition = null; String stopPosition = null; String isolationLevel = null; String lockString = null; switch (hsrs.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; } if (hsrs.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 (hsrs.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? lockString = 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? lockString = lockString + " " + MessageService.getTextMessage( SQLState.LANG_ROW); break; } if (hsrs.indexName != null) { /* Start and stop position strings will be non-null * if the HSRS has been closed. Otherwise, we go off * and build the strings now. */ startPosition = hsrs.startPositionString; if (startPosition == null) { startPosition = hsrs.printStartPosition(); } stopPosition = hsrs.stopPositionString; if (stopPosition == null) { stopPosition = hsrs.printStopPosition(); } } // DistinctScanResultSet is simple sub-class of // HashScanResultSet if (rs instanceof DistinctScanResultSet) { return new RealDistinctScanStatistics( hsrs.numOpens, hsrs.rowsSeen, hsrs.rowsFiltered, hsrs.constructorTime, hsrs.openTime, hsrs.nextTime, hsrs.closeTime, hsrs.resultSetNumber, hsrs.tableName, hsrs.indexName, hsrs.isConstraint, hsrs.hashtableSize, hsrs.keyColumns, hsrs.printQualifiers( hsrs.scanQualifiers), hsrs.printQualifiers( hsrs.nextQualifiers), hsrs.getScanProperties(), startPosition, stopPosition, isolationLevel, lockString, hsrs.optimizerEstimatedRowCount, hsrs.optimizerEstimatedCost ); } else { return new RealHashScanStatistics( hsrs.numOpens, hsrs.rowsSeen, hsrs.rowsFiltered, hsrs.constructorTime, hsrs.openTime, hsrs.nextTime, hsrs.closeTime, hsrs.resultSetNumber, hsrs.tableName, hsrs.indexName, hsrs.isConstraint, hsrs.hashtableSize, hsrs.keyColumns, hsrs.printQualifiers( hsrs.scanQualifiers), hsrs.printQualifiers( hsrs.nextQualifiers), hsrs.getScanProperties(), startPosition, stopPosition, isolationLevel, lockString, hsrs.optimizerEstimatedRowCount, hsrs.optimizerEstimatedCost ); } } else if (rs instanceof HashTableResultSet) { HashTableResultSet htrs = (HashTableResultSet) rs; int subqueryTrackingArrayLength = (htrs.subqueryTrackingArray == null) ? 0 : htrs.subqueryTrackingArray.length; ResultSetStatistics[] subqueryTrackingArray = new ResultSetStatistics[subqueryTrackingArrayLength]; boolean anyAttached = false; for (int index = 0; index < subqueryTrackingArrayLength; index++) { if (htrs.subqueryTrackingArray[index] != null && htrs.subqueryTrackingArray[index].getPointOfAttachment() == htrs.resultSetNumber) { subqueryTrackingArray[index] = getResultSetStatistics( htrs.subqueryTrackingArray[index]); anyAttached = true; } } if (! anyAttached) { subqueryTrackingArray = null; } return new RealHashTableStatistics( htrs.numOpens, htrs.rowsSeen, htrs.rowsFiltered, htrs.constructorTime, htrs.openTime, htrs.nextTime, htrs.closeTime, htrs.resultSetNumber, htrs.hashtableSize, htrs.keyColumns, HashScanResultSet.printQualifiers( htrs.nextQualifiers), htrs.scanProperties, htrs.optimizerEstimatedRowCount, htrs.optimizerEstimatedCost, subqueryTrackingArray, getResultSetStatistics(htrs.source) ); } else if (rs instanceof VTIResultSet) { VTIResultSet vtirs = (VTIResultSet) rs; return new RealVTIStatistics( vtirs.numOpens, vtirs.rowsSeen, vtirs.rowsFiltered, vtirs.constructorTime, vtirs.openTime, vtirs.nextTime, vtirs.closeTime, vtirs.resultSetNumber, vtirs.javaClassName, vtirs.optimizerEstimatedRowCount, vtirs.optimizerEstimatedCost ); } 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, dsrs.indexName, dsrs.isConstraint, dsrs.printQualifiers(), dsrs.getScanProperties(), startPosition, stopPosition, isolationLevel, lockRequestString, dsrs.rowsPerRead, dsrs.coarserLock, dsrs.optimizerEstimatedRowCount, dsrs.optimizerEstimatedCost); } else { return null; } } // // class interface // public RealResultSetStatisticsFactory() { }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -