org.apache.derby.iapi.sql.compile
Interface RequiredRowOrdering

All Known Implementing Classes:
OrderByList

public interface RequiredRowOrdering

This interface provides a representation of the required ordering of rows from a ResultSet. Different operations can require ordering: ORDER BY, DISTINCT, GROUP BY. Some operations, like ORDER BY, require that the columns be ordered a particular way, while others, like DISTINCT and GROUP BY, reuire only that there be no duplicates in the result.


Field Summary
static int ELIMINATE_DUPS
           
static int NOTHING_REQUIRED
           
static int SORT_REQUIRED
           
 
Method Summary
 void estimateCost(double estimatedInputRows, RowOrdering rowOrdering, CostEstimate resultCost)
          Estimate the cost of doing a sort for this row ordering, given the number of rows to be sorted.
 boolean getSortNeeded()
           
 void sortNeeded()
          Indicate that a sort is necessary to fulfill this required ordering.
 void sortNotNeeded()
          Indicate that a sort is *NOT* necessary to fulfill this required ordering.
 int sortRequired(RowOrdering rowOrdering)
          Tell whether sorting is required for this RequiredRowOrdering, given a RowOrdering.
 int sortRequired(RowOrdering rowOrdering, JBitSet tableMap)
          Tell whether sorting is required for this RequiredRowOrdering, given a RowOrdering representing a partial join order, and a bit map telling what tables are represented in the join order.
 

Field Detail

SORT_REQUIRED

public static final int SORT_REQUIRED
See Also:
Constant Field Values

ELIMINATE_DUPS

public static final int ELIMINATE_DUPS
See Also:
Constant Field Values

NOTHING_REQUIRED

public static final int NOTHING_REQUIRED
See Also:
Constant Field Values
Method Detail

sortRequired

public int sortRequired(RowOrdering rowOrdering)
                 throws StandardException
Tell whether sorting is required for this RequiredRowOrdering, given a RowOrdering.

Parameters:
rowOrdering - The order of rows in question
Returns:
SORT_REQUIRED if sorting is required, ELIMINATE_DUPS if no sorting is required but duplicates must be eliminated (i.e. the rows are in the right order but there may be duplicates), NOTHING_REQUIRED is no operation is required
Throws:
StandardException - Thrown on error

sortRequired

public int sortRequired(RowOrdering rowOrdering,
                        JBitSet tableMap)
                 throws StandardException
Tell whether sorting is required for this RequiredRowOrdering, given a RowOrdering representing a partial join order, and a bit map telling what tables are represented in the join order. This is useful for reducing the number of cases the optimizer has to consider.

Parameters:
rowOrdering - The order of rows in the partial join order
tableMap - A bit map of the tables in the partial join order
Returns:
SORT_REQUIRED if sorting is required, ELIMINATE_DUPS if no sorting is required by duplicates must be eliminated (i.e. the rows are in the right order but there may be duplicates), NOTHING_REQUIRED is no operation is required
Throws:
StandardException - Thrown on error

estimateCost

public void estimateCost(double estimatedInputRows,
                         RowOrdering rowOrdering,
                         CostEstimate resultCost)
                  throws StandardException
Estimate the cost of doing a sort for this row ordering, given the number of rows to be sorted. This does not take into account whether the sort is really needed. It also estimates the number of result rows.

Parameters:
estimatedInputRows - The estimated number of rows to sort
rowOrdering - The ordering of the input rows
resultCost - A place to store the resulting cost
Throws:
StandardException - Thrown on error

sortNeeded

public void sortNeeded()
Indicate that a sort is necessary to fulfill this required ordering. This method may be called many times during a single optimization.


sortNotNeeded

public void sortNotNeeded()
Indicate that a sort is *NOT* necessary to fulfill this required ordering. This method may be called many times during a single optimization.


getSortNeeded

public boolean getSortNeeded()

Built on Tue 2006-10-10 19:23:47+0200, from revision exported

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.