org.apache.derby.impl.store.access.btree
Class SearchParameters

java.lang.Object
  extended byorg.apache.derby.impl.store.access.btree.SearchParameters

public class SearchParameters
extends java.lang.Object

Parameters that are passed down during a recursive b-tree search. This class is intended to be used as a struct, primarily to make it easier to pass a number of search parameters around, and also to make it easy to re-use objects and not re-allocate.


Field Summary
 OpenBTree btree
          The b-tree this search is for.
 float current_fraction
          If this is an optimizer search, the fraction of rows that are "in" the the current search.
 float left_fraction
          If this is an optimizer search, the fraction of rows that are left of the current search.
(package private)  int partial_key_match_op
          Value to return in comparisons where partial key matches exactly the partial key of a row.
static int POSITION_LEFT_OF_PARTIAL_KEY_MATCH
          Position on key just left of a sequence of partial key matches.
static int POSITION_RIGHT_OF_PARTIAL_KEY_MATCH
          Position on last key in a sequence of partial key matches.
 boolean resultExact
          Whether the row found exactly matched the searchKey.
 int resultSlot
          The resulting slot from the search.
 boolean searchForOptimizer
          Whether the search is for the optimizer, to determine range of scan.
 DataValueDescriptor[] searchKey
          The key being searched for.
 DataValueDescriptor[] template
          An index row with the correct types for the index, into which rows are read during the search.
 
Constructor Summary
SearchParameters(DataValueDescriptor[] searchKey, int partial_key_match_op, DataValueDescriptor[] template, OpenBTree btree, boolean searchForOptimizer)
          Construct search parameters.
 
Method Summary
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

POSITION_LEFT_OF_PARTIAL_KEY_MATCH

public static final int POSITION_LEFT_OF_PARTIAL_KEY_MATCH
Position on key just left of a sequence of partial key matches. Used by scan which will then start scan on next key.

See Also:
Constant Field Values

POSITION_RIGHT_OF_PARTIAL_KEY_MATCH

public static final int POSITION_RIGHT_OF_PARTIAL_KEY_MATCH
Position on last key in a sequence of partial key matches. Used by scan which will then start scan on next key.

See Also:
Constant Field Values

searchKey

public DataValueDescriptor[] searchKey
The key being searched for. Never intended to be modified for the lifetime of the object.


partial_key_match_op

int partial_key_match_op
Value to return in comparisons where partial key matches exactly the partial key of a row. Use this parameter to control where in a duplicate partial key list to position the search. Here are some examples: Assume: dataset of {1,0}, {5,1}, {5,2}, {6,4}; and partial key of {5}. If the scan is GE , then the scan intially wants to position on {1,0} (one before first qualifying row) - In this case when a partial match is found we want to return 1 when we hit {5,1}; but if the searchOperator is GT, then we want to return -1 on {5,1}, {5,2}, and then return 1 on {6,4}. partial_key_match_op = POSITION_LEFT_OF_PARTIAL_KEY_MATCH: Scan is looking for GE the partial key, so position the scan to the left of any partial key that exactly matches the partial key. If the scan is GE , then the scan intially wants to position on {1,0} (one before first qualifying row) - In this case when a partial match is found we want to return 1 when we hit {5,1}. partial_key_match_op = POSITION_RIGHT_OF_PARTIAL_KEY_MATCH: Scan is looking for GT the partial key, so position the scan to the right of any partial key that exactly matches the partial key. If the scan is GT, then the scan intially wants to position on {5,2} (one before first qualifying row) - In this case when a partial match is found we want to return -1 when we hit on {5,1}, {5,2}, and then return 1 on {6,4}. partial_key_match_op = 0: Scan does not care where in a set of duplicate partial keys to position to (not used currently).


template

public DataValueDescriptor[] template
An index row with the correct types for the index, into which rows are read during the search. Rows are read into the template during a page search, but they will be overwritten; there is only one template per search.


btree

public OpenBTree btree
The b-tree this search is for. Effectively read-only for the lifetime of this object.


resultSlot

public int resultSlot
The resulting slot from the search. Updated when the search completes.


resultExact

public boolean resultExact
Whether the row found exactly matched the searchKey. Updated when the search completes.


searchForOptimizer

public boolean searchForOptimizer
Whether the search is for the optimizer, to determine range of scan.


left_fraction

public float left_fraction
If this is an optimizer search, the fraction of rows that are left of the current search. When the search completes this number multiplied by the number of leaf rows in the table is the number of rows left of the result slot in the search.


current_fraction

public float current_fraction
If this is an optimizer search, the fraction of rows that are "in" the the current search. This number is used as we descend down the tree to track the percentage of rows that we think are in the current subtree defined by all leaf's that can be reached from the current branch.

Constructor Detail

SearchParameters

public SearchParameters(DataValueDescriptor[] searchKey,
                        int partial_key_match_op,
                        DataValueDescriptor[] template,
                        OpenBTree btree,
                        boolean searchForOptimizer)
                 throws StandardException
Construct search parameters.

Throws:
StandardException - Standard exception policy.
Method Detail

toString

public java.lang.String toString()

Built on Mon 2007-06-04 09:58:47+0400, from revision ???

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