com.lucidera.lcs
Class LcsAddDeletionScanRule

java.lang.Object
  extended by org.eigenbase.relopt.RelOptRule
      extended by com.lucidera.lcs.LcsAddDeletionScanRule

public class LcsAddDeletionScanRule
extends RelOptRule

A rule for modifying the input into a row scan to include a scan of the deletion index.

Version:
$Id: //open/dev/farrago/src/com/lucidera/lcs/LcsAddDeletionScanRule.java#10 $
Author:
Zelaine Fong

Field Summary
static LcsAddDeletionScanRule instanceAnyInput
           
static LcsAddDeletionScanRule instanceMinusInput
           
static LcsAddDeletionScanRule instanceNoInputs
           
 
Fields inherited from class org.eigenbase.relopt.RelOptRule
ANY, description, operands
 
Constructor Summary
LcsAddDeletionScanRule(RelOptRuleOperand operand, String id)
          Creates an LcsAddDeletionScanRule.
 
Method Summary
private  boolean alreadyCalled(RelOptRuleCall call, boolean alterTable)
          Determines if the deletion scan is already included in the row scan input, or if this particular instance of the rule shouldn't be fired in favor of another more specific rule instance.
 void onMatch(RelOptRuleCall call)
          Receives notification about a rule match.
 
Methods inherited from class org.eigenbase.relopt.RelOptRule
convert, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, mergeTraitsAndConvert, mergeTraitsAndConvert, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

instanceNoInputs

public static final LcsAddDeletionScanRule instanceNoInputs

instanceMinusInput

public static final LcsAddDeletionScanRule instanceMinusInput

instanceAnyInput

public static final LcsAddDeletionScanRule instanceAnyInput
Constructor Detail

LcsAddDeletionScanRule

public LcsAddDeletionScanRule(RelOptRuleOperand operand,
                              String id)
Creates an LcsAddDeletionScanRule.

Parameters:
operand - Root operand, must not be null
id - Description of rule
Method Detail

onMatch

public void onMatch(RelOptRuleCall call)
Description copied from class: RelOptRule
Receives notification about a rule match. At the time that this method is called, call.rels holds the set of relational expressions which match the operands to the rule; call.rels[0] is the root expression.

Typically a rule would check that the nodes are valid matches, creates a new expression, then calls back RelOptRuleCall.transformTo(org.eigenbase.rel.RelNode) to register the expression.

Specified by:
onMatch in class RelOptRule
Parameters:
call - Rule call
See Also:
RelOptRule.matches(RelOptRuleCall)

alreadyCalled

private boolean alreadyCalled(RelOptRuleCall call,
                              boolean alterTable)
Determines if the deletion scan is already included in the row scan input, or if this particular instance of the rule shouldn't be fired in favor of another more specific rule instance. The first is done by examining the first input into the row scan and seeing if there's a minus of a search of the deletion index or a search of the deletion index.

Parameters:
call - rule call
alterTable - whether we are preparing ALTER TABLE ADD COLUMN
Returns:
true if this should be fired