📄 level2optimizerimpl.java
字号:
objectParam1 + " as truly the best for table " + intParam1 + " for plan type " + (intParam2 == Optimizer.NORMAL_PLAN ? " normal " : "sort avoidance") + "\n"; break; case NO_MORE_CONGLOMERATES: traceString = "No more conglomerates to consider for table " + intParam1; break; case CONSIDERING_CONGLOMERATE: cd = (ConglomerateDescriptor) objectParam1; cdString = dumpConglomerateDescriptor(cd); traceString = "\nConsidering conglomerate " + cdString + " for table " + intParam1; break; case SCANNING_HEAP_FULL_MATCH_ON_UNIQUE_KEY: traceString = "Scanning heap, but we have a full match on a unique key."; break; case ADDING_UNORDERED_OPTIMIZABLE: traceString = "Adding unordered optimizable, # of predicates = " + intParam1; break; case CHANGING_ACCESS_PATH_FOR_TABLE: traceString = "Changing access path for table " + intParam1; break; case TABLE_LOCK_NO_START_STOP: traceString = "Lock mode set to MODE_TABLE because no start or stop position"; break; case NON_COVERING_INDEX_COST: traceString = "Index does not cover query - cost including base row fetch is: " + doubleParam + " for table " + intParam1; break; case ROW_LOCK_ALL_CONSTANT_START_STOP: traceString = "Lock mode set to MODE_RECORD because all start and stop positions are constant"; break; case ESTIMATING_COST_OF_CONGLOMERATE: cd = (ConglomerateDescriptor) objectParam1; cdString = dumpConglomerateDescriptor(cd); traceString = "Estimating cost of conglomerate: " + costForTable(cdString, intParam1); break; case LOOKING_FOR_SPECIFIED_INDEX: traceString = "Looking for user-specified index: " + objectParam1 + " for table " + intParam1; break; case MATCH_SINGLE_ROW_COST: traceString = "Guaranteed to match a single row - cost is: " + doubleParam + " for table " + intParam1; break; case COST_INCLUDING_EXTRA_1ST_COL_SELECTIVITY: traceString = costIncluding( "1st column", objectParam1, intParam1); traceString = "Cost including extra first column selectivity is : " + objectParam1 + " for table " + intParam1; break; case CALLING_NEXT_ACCESS_PATH: traceString = "Calling nextAccessPath() for base table " + objectParam1 + " with " + intParam1 + " predicates."; break; case TABLE_LOCK_OVER_THRESHOLD: traceString = lockModeThreshold("MODE_TABLE", "greater", doubleParam, intParam1); break; case ROW_LOCK_UNDER_THRESHOLD: traceString = lockModeThreshold("MODE_RECORD", "less", doubleParam, intParam1); break; case COST_INCLUDING_EXTRA_START_STOP: traceString = costIncluding( "start/stop", objectParam1, intParam1); break; case COST_INCLUDING_EXTRA_QUALIFIER_SELECTIVITY: traceString = costIncluding( "qualifier", objectParam1, intParam1); break; case COST_INCLUDING_EXTRA_NONQUALIFIER_SELECTIVITY: traceString = costIncluding( "non-qualifier", objectParam1, intParam1); break; case COST_INCLUDING_COMPOSITE_SEL_FROM_STATS: traceString = costIncluding("selectivity from statistics", objectParam1, intParam1); break; case COST_INCLUDING_STATS_FOR_INDEX: traceString = costIncluding("statistics for index being considered", objectParam1, intParam1); break; case COMPOSITE_SEL_FROM_STATS: traceString = "Selectivity from statistics found. It is " + doubleParam; break; case COST_OF_NONCOVERING_INDEX: traceString = "Index does not cover query: cost including row fetch is: " + costForTable(objectParam1, intParam1); break; case REMEMBERING_JOIN_STRATEGY: traceString = "\nRemembering join strategy " + objectParam1 + " as best for table " + intParam1; break; case REMEMBERING_BEST_ACCESS_PATH_SUBSTRING: traceString = "in best access path"; break; case REMEMBERING_BEST_SORT_AVOIDANCE_ACCESS_PATH_SUBSTRING: traceString = "in best sort avoidance access path"; break; case REMEMBERING_BEST_UNKNOWN_ACCESS_PATH_SUBSTRING: traceString = "in best unknown access path"; break; case COST_OF_CONGLOMERATE_SCAN1: cd = (ConglomerateDescriptor) objectParam1; cdString = dumpConglomerateDescriptor(cd); traceString = "Cost of conglomerate " + cdString + " scan for table number " + intParam1 + " is : "; break; case COST_OF_CONGLOMERATE_SCAN2: traceString = objectParam1.toString(); break; case COST_OF_CONGLOMERATE_SCAN3: traceString = "\tNumber of extra first column predicates is : " + intParam1 + ", extra first column selectivity is : " + doubleParam; break; case COST_OF_CONGLOMERATE_SCAN4: traceString = "\tNumber of extra start/stop predicates is : " + intParam1 + ", extra start/stop selectivity is : " + doubleParam; break; case COST_OF_CONGLOMERATE_SCAN5: traceString = "\tNumber of extra qualifiers is : " + intParam1 + ", extra qualifier selectivity is : " + doubleParam; break; case COST_OF_CONGLOMERATE_SCAN6: traceString = "\tNumber of extra non-qualifiers is : " + intParam1 + ", extra non-qualifier selectivity is : " + doubleParam; break; case COST_OF_CONGLOMERATE_SCAN7: traceString = "\tNumber of start/stop statistics predicates is : " + intParam1 + ", statistics start/stop selectivity is : " + doubleParam; break; } if (SanityManager.DEBUG) { if (traceString == null) { SanityManager.THROWASSERT( "traceString expected to be non-null"); } } lcc.appendOptimizerTraceOutput(traceString + "\n"); } private String costForTable(Object cost, int tableNumber) { return cost + " for table " + tableNumber; } private String bestCost() { return "Best cost = " + bestCost + "\n"; } private String buildJoinOrder(String prefix, boolean addJoinOrderNumber, int joinOrderNumber, int[] joinOrder) { String joinOrderString = prefix; for (int i = 0; i <= joinPosition; i++) { joinOrderString = joinOrderString + " " + joinOrder[i]; } if (addJoinOrderNumber) { joinOrderString = joinOrderString + " " + joinOrderNumber; } return joinOrderString + " with assignedTableMap = " + assignedTableMap + "\n\n"; } private String lockModeThreshold( String lockMode, String relop, double rowCount, int threshold) { return "Lock mode set to " + lockMode + " because estimated row count of " + rowCount + " " + relop + " than threshold of " + threshold; } private String costIncluding( String selectivityType, Object objectParam1, int intParam1) { return "Cost including extra " + selectivityType + " start/stop selectivity is : " + costForTable(objectParam1, intParam1); } private String dumpConglomerateDescriptor(ConglomerateDescriptor cd) { if (SanityManager.DEBUG) { return cd.toString(); } String keyString = ""; String[] columnNames = cd.getColumnNames(); if (cd.isIndex() && columnNames != null ) { IndexRowGenerator irg = cd.getIndexDescriptor(); int[] keyColumns = irg.baseColumnPositions(); keyString = ", key columns = {" + columnNames[keyColumns[0] - 1]; for (int index = 1; index < keyColumns.length; index++) { keyString = keyString + ", " + columnNames[keyColumns[index] - 1]; } keyString = keyString + "}"; } return "CD: conglomerateNumber = " + cd.getConglomerateNumber() + " name = " + cd.getConglomerateName() + " uuid = " + cd.getUUID() + " indexable = " + cd.isIndex() + keyString; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -