blob: 159a354dbae94c602aedb50d8aa60ff55d79b34f [file] [log] [blame]
/*
Derby - Class org.apache.derbyTesting.functionTests.tests.lang.DummyOptTrace
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package org.apache.derbyTesting.functionTests.tests.lang;
import java.io.PrintWriter;
import org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor;
import org.apache.derby.iapi.util.JBitSet;
import org.apache.derby.iapi.sql.compile.AccessPath;
import org.apache.derby.iapi.sql.compile.CostEstimate;
import org.apache.derby.iapi.sql.compile.JoinStrategy;
import org.apache.derby.iapi.sql.compile.OptTrace;
import org.apache.derby.iapi.sql.compile.Optimizable;
import org.apache.derby.iapi.sql.compile.OptimizableList;
import org.apache.derby.iapi.sql.compile.RequiredRowOrdering;
/**
* Dummy implementation of OptTrace to test the loading of custom
* trace logic for the Optimizer.
*/
public class DummyOptTrace implements OptTrace
{
////////////////////////////////////////////////////////////////////////
//
// CONSTANTS
//
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//
// STATE
//
////////////////////////////////////////////////////////////////////////
private StringBuffer _buffer;
private static String _fullTrace;
////////////////////////////////////////////////////////////////////////
//
// CONSTRUCTOR
//
////////////////////////////////////////////////////////////////////////
/** 0-arg constructor required by OptTrace contract */
public DummyOptTrace()
{
_buffer = new StringBuffer();
}
////////////////////////////////////////////////////////////////////////
//
// FUNCTION FOR RETRIEVING THE FULL TRACE
//
////////////////////////////////////////////////////////////////////////
public static String fullTrace() { return _fullTrace; }
////////////////////////////////////////////////////////////////////////
//
// BEHAVIOR
//
////////////////////////////////////////////////////////////////////////
//
// We only provide implementation for these methods.
//
public void traceStartStatement( String statementText ) { _buffer.append( "<text>" + statementText + "</text>" ); }
public void printToWriter( PrintWriter out ) { _fullTrace = _buffer.toString(); }
//
// Don't need to bother implementing the rest of the behavior.
//
public void traceStartQueryBlock( long timeOptimizationStarted, int optimizerID, OptimizableList optimizableList ) {}
public void traceEndQueryBlock() {}
public void traceTimeout( long currentTime, CostEstimate bestCost ) {}
public void traceVacuous() {}
public void traceCompleteJoinOrder() {}
public void traceSortCost( CostEstimate sortCost, CostEstimate currentCost ) {}
public void traceNoBestPlan() {}
public void traceModifyingAccessPaths( int optimizerID ) {}
public void traceShortCircuiting( boolean timeExceeded, Optimizable thisOpt, int joinPosition ) {}
public void traceSkippingJoinOrder( int nextOptimizable, int joinPosition, int[] proposedJoinOrder, JBitSet assignedTableMap ) {}
public void traceIllegalUserJoinOrder() {}
public void traceUserJoinOrderOptimized() {}
public void traceJoinOrderConsideration( int joinPosition, int[] proposedJoinOrder, JBitSet assignedTableMap ) {}
public void traceCostWithoutSortAvoidance( CostEstimate currentCost ) {}
public void traceCostWithSortAvoidance( CostEstimate currentSortAvoidanceCost ) {}
public void traceCurrentPlanAvoidsSort( CostEstimate bestCost, CostEstimate currentSortAvoidanceCost ) {}
public void traceCheapestPlanSoFar( int planType, CostEstimate currentCost ) {}
public void traceSortNeededForOrdering( int planType, RequiredRowOrdering requiredRowOrdering ) {}
public void traceRememberingBestJoinOrder
( int joinPosition, int[] bestJoinOrder, int planType, CostEstimate planCost, JBitSet assignedTableMap ) {}
public void traceSkippingBecauseTooMuchMemory( int maxMemoryPerTable ) {}
public void traceCostOfNScans( int tableNumber, double rowCount, CostEstimate cost ) {}
public void traceSkipUnmaterializableHashJoin() {}
public void traceSkipHashJoinNoHashKeys() {}
public void traceHashKeyColumns( int[] hashKeyColumns ) {}
public void traceOptimizingJoinNode() {}
public void traceConsideringJoinStrategy( JoinStrategy js, int tableNumber ) {}
public void traceRememberingBestAccessPath( AccessPath accessPath, int tableNumber, int planType ) {}
public void traceNoMoreConglomerates( int tableNumber ) {}
public void traceConsideringConglomerate( ConglomerateDescriptor cd, int tableNumber ) {}
public void traceScanningHeapWithUniqueKey() {}
public void traceAddingUnorderedOptimizable( int predicateCount ) {}
public void traceChangingAccessPathForTable( int tableNumber ) {}
public void traceNoStartStopPosition() {}
public void traceNonCoveringIndexCost( double cost, int tableNumber ) {}
public void traceConstantStartStopPositions() {}
public void traceEstimatingCostOfConglomerate( ConglomerateDescriptor cd, int tableNumber ) {}
public void traceLookingForSpecifiedIndex( String indexName, int tableNumber ) {}
public void traceSingleMatchedRowCost( double cost, int tableNumber ) {}
public void traceCostIncludingExtra1stColumnSelectivity( CostEstimate cost, int tableNumber ) {}
public void traceNextAccessPath( String baseTable, int predicateCount ) {}
public void traceCostIncludingExtraStartStop( CostEstimate cost, int tableNumber ) {}
public void traceCostIncludingExtraQualifierSelectivity( CostEstimate cost, int tableNumber ) {}
public void traceCostIncludingExtraNonQualifierSelectivity( CostEstimate cost, int tableNumber ) {}
public void traceCostOfNoncoveringIndex( CostEstimate cost, int tableNumber ) {}
public void traceRememberingJoinStrategy( JoinStrategy joinStrategy, int tableNumber ) {}
public void traceRememberingBestAccessPathSubstring( AccessPath ap, int tableNumber ) {}
public void traceRememberingBestSortAvoidanceAccessPathSubstring( AccessPath ap, int tableNumber ) {}
public void traceRememberingBestUnknownAccessPathSubstring( AccessPath ap, int tableNumber ) {}
public 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
) {}
public void traceCostIncludingCompositeSelectivityFromStats( CostEstimate cost, int tableNumber ) {}
public void traceCompositeSelectivityFromStatistics( double statCompositeSelectivity ) {}
public void traceCostIncludingStatsForIndex( CostEstimate cost, int tableNumber ) {}
////////////////////////////////////////////////////////////////////////
//
// NESTED SUBCLASS WHICH IS MISSING THE 0-ARG CONSTRUCTOR
//
////////////////////////////////////////////////////////////////////////
public static final class BadSubclass extends DummyOptTrace
{
public BadSubclass( int dummy ) {}
}
}