Interface OptTrace

    • Method Detail

      • traceStartStatement

        void traceStartStatement​(java.lang.String statementText)
        Start the start of tracing a statement.
      • traceStartQueryBlock

        void traceStartQueryBlock​(long timeOptimizationStarted,
                                  int optimizerID,
                                  OptimizableList optimizableList)
        Start optimizer tracing for a query block.
      • traceEndQueryBlock

        void traceEndQueryBlock()
        End tracing the optimization of a query block.
      • traceTimeout

        void traceTimeout​(long currentTime,
                          CostEstimate bestCost)
        Say that the optimizer ran out of time.
      • traceVacuous

        void traceVacuous()
        Say that there's nothing to optimizer.
      • traceCompleteJoinOrder

        void traceCompleteJoinOrder()
        Say that we have a complete join order.
      • traceNoBestPlan

        void traceNoBestPlan()
        Say that we couldn't find a best plan.
      • traceModifyingAccessPaths

        void traceModifyingAccessPaths​(int optimizerID)
        Say that we're modifying access paths.
      • traceShortCircuiting

        void traceShortCircuiting​(boolean timeExceeded,
                                  Optimizable thisOpt,
                                  int joinPosition)
        Say that we short-circuited a join order.
      • traceSkippingJoinOrder

        void traceSkippingJoinOrder​(int nextOptimizable,
                                    int joinPosition,
                                    int[] proposedJoinOrder,
                                    JBitSet assignedTableMap)
        Say that we're skipping the join order starting with the next optimizable.
      • traceIllegalUserJoinOrder

        void traceIllegalUserJoinOrder()
        Say that the user specified an impossible join order.
      • traceUserJoinOrderOptimized

        void traceUserJoinOrderOptimized()
        Say that we have optimized the user-specified join order.
      • traceJoinOrderConsideration

        void traceJoinOrderConsideration​(int joinPosition,
                                         int[] proposedJoinOrder,
                                         JBitSet assignedTableMap)
        Say that we're considering a join order.
      • traceCostWithoutSortAvoidance

        void traceCostWithoutSortAvoidance​(CostEstimate currentCost)
        Report the cost without a sort.
      • traceCostWithSortAvoidance

        void traceCostWithSortAvoidance​(CostEstimate currentSortAvoidanceCost)
        Report the cost with sort avoidance.
      • traceCurrentPlanAvoidsSort

        void traceCurrentPlanAvoidsSort​(CostEstimate bestCost,
                                        CostEstimate currentSortAvoidanceCost)
        Say that the current plan avoids a sort.
      • traceCheapestPlanSoFar

        void traceCheapestPlanSoFar​(int planType,
                                    CostEstimate currentCost)
        Report the cost of the cheapest plan so far.
      • traceSortNeededForOrdering

        void traceSortNeededForOrdering​(int planType,
                                        RequiredRowOrdering requiredRowOrdering)
        Report that this plan needs a sort
      • traceRememberingBestJoinOrder

        void traceRememberingBestJoinOrder​(int joinPosition,
                                           int[] bestJoinOrder,
                                           int planType,
                                           CostEstimate planCost,
                                           JBitSet assignedTableMap)
        Say that we are remembering the current plan as the best join order so far.
      • traceSkippingBecauseTooMuchMemory

        void traceSkippingBecauseTooMuchMemory​(int maxMemoryPerTable)
        Say that we are skipping a plan because it consumes too much memory.
      • traceCostOfNScans

        void traceCostOfNScans​(int tableNumber,
                               double rowCount,
                               CostEstimate cost)
        Report the cost of scanning a table a certain number of times
      • traceSkipUnmaterializableHashJoin

        void traceSkipUnmaterializableHashJoin()
        Say that we won't consider a hash join because the result can't be materialized
      • traceSkipHashJoinNoHashKeys

        void traceSkipHashJoinNoHashKeys()
        Say we won't consider a hash join because there are no hash key columns.
      • traceHashKeyColumns

        void traceHashKeyColumns​(int[] hashKeyColumns)
        Report the columns being traced
      • traceOptimizingJoinNode

        void traceOptimizingJoinNode()
        Say that we're starting to optimize a join node
      • traceConsideringJoinStrategy

        void traceConsideringJoinStrategy​(JoinStrategy js,
                                          int tableNumber)
        Say that we're considering a particular join strategy on a particular table.
      • traceRememberingBestAccessPath

        void traceRememberingBestAccessPath​(AccessPath accessPath,
                                            int tableNumber,
                                            int planType)
        Report that we've found a best access path.
      • traceNoMoreConglomerates

        void traceNoMoreConglomerates​(int tableNumber)
        Say that we have exhausted the conglomerate possibilities for a table.
      • traceConsideringConglomerate

        void traceConsideringConglomerate​(ConglomerateDescriptor cd,
                                          int tableNumber)
        Report that we are considering a conglomerate for a table.
      • traceScanningHeapWithUniqueKey

        void traceScanningHeapWithUniqueKey()
        Say that we're considering scanning a heap even though we have a unique key match.
      • traceAddingUnorderedOptimizable

        void traceAddingUnorderedOptimizable​(int predicateCount)
        Say that we're adding an unordered optimizable.
      • traceChangingAccessPathForTable

        void traceChangingAccessPathForTable​(int tableNumber)
        Say that we're considering a different access path for a table.
      • traceNoStartStopPosition

        void traceNoStartStopPosition()
        Say that we're setting the lock mode to MODE_TABLE because there is no start/stop position.
      • traceNonCoveringIndexCost

        void traceNonCoveringIndexCost​(double cost,
                                       int tableNumber)
        Say that we're considering a non-covering index.
      • traceConstantStartStopPositions

        void traceConstantStartStopPositions()
        Say that we're setting the lock mode to MODE_RECORD because the start and stop positions are all constant.
      • traceEstimatingCostOfConglomerate

        void traceEstimatingCostOfConglomerate​(ConglomerateDescriptor cd,
                                               int tableNumber)
        Report the cost of using a particular conglomerate to scan a table.
      • traceLookingForSpecifiedIndex

        void traceLookingForSpecifiedIndex​(java.lang.String indexName,
                                           int tableNumber)
        Say that we're looking for an index specified by optimizer hints.
      • traceSingleMatchedRowCost

        void traceSingleMatchedRowCost​(double cost,
                                       int tableNumber)
        Report the cost of a scan which will match exactly one row.
      • traceCostIncludingExtra1stColumnSelectivity

        void traceCostIncludingExtra1stColumnSelectivity​(CostEstimate cost,
                                                         int tableNumber)
        Report the cost of a scan given the selectivity of an extra first column.
      • traceNextAccessPath

        void traceNextAccessPath​(java.lang.String baseTable,
                                 int predicateCount)
        Report that we are advancing to the next access path for the table.
      • traceCostIncludingExtraStartStop

        void traceCostIncludingExtraStartStop​(CostEstimate cost,
                                              int tableNumber)
        Report the cost if we include an extra start/stop.
      • traceCostIncludingExtraQualifierSelectivity

        void traceCostIncludingExtraQualifierSelectivity​(CostEstimate cost,
                                                         int tableNumber)
        Report the cost if we include an extra qualifier.
      • traceCostIncludingExtraNonQualifierSelectivity

        void traceCostIncludingExtraNonQualifierSelectivity​(CostEstimate cost,
                                                            int tableNumber)
        Report the cost if we include an extra non-qualifier.
      • traceCostOfNoncoveringIndex

        void traceCostOfNoncoveringIndex​(CostEstimate cost,
                                         int tableNumber)
        Report the cost of using a non-covering index.
      • traceRememberingJoinStrategy

        void traceRememberingJoinStrategy​(JoinStrategy joinStrategy,
                                          int tableNumber)
        Say that we've found a new best join strategy for the table.
      • traceRememberingBestAccessPathSubstring

        void traceRememberingBestAccessPathSubstring​(AccessPath ap,
                                                     int tableNumber)
        Report the best access path for the table so far.
      • traceRememberingBestSortAvoidanceAccessPathSubstring

        void traceRememberingBestSortAvoidanceAccessPathSubstring​(AccessPath ap,
                                                                  int tableNumber)
        Report the best sort-avoiding access path for this table so far.
      • traceRememberingBestUnknownAccessPathSubstring

        void traceRememberingBestUnknownAccessPathSubstring​(AccessPath ap,
                                                            int tableNumber)
        Report an optimizer failure, e.g., while optimizing an outer join
      • traceCostOfConglomerateScan

        void traceCostOfConglomerateScan​(int tableNumber,
                                         ConglomerateDescriptor cd,
                                         CostEstimate costEstimate,
                                         int numExtraFirstColumnPreds,
                                         double extraFirstColumnSelectivity,
                                         int numExtraStartStopPreds,
                                         double extraStartStopSelectivity,
                                         int startStopPredCount,
                                         double statStartStopSelectivity,
                                         int numExtraQualifiers,
                                         double extraQualifierSelectivity,
                                         int numExtraNonQualifiers,
                                         double extraNonQualifierSelectivity)
        Report the cost of a conglomerate scan.
      • traceCostIncludingCompositeSelectivityFromStats

        void traceCostIncludingCompositeSelectivityFromStats​(CostEstimate cost,
                                                             int tableNumber)
        Report the cost based on selectivities coming out of SYSSTATISTICS.
      • traceCompositeSelectivityFromStatistics

        void traceCompositeSelectivityFromStatistics​(double statCompositeSelectivity)
        Report the selectivity calculated from SYSSTATISTICS.
      • traceCostIncludingStatsForIndex

        void traceCostIncludingStatsForIndex​(CostEstimate cost,
                                             int tableNumber)
        Report the cost based on index statistics.
      • printToWriter

        void printToWriter​(java.io.PrintWriter out)
        Print the trace so far.