|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eigenbase.sql.type.CompositeOperandTypeChecker
public class CompositeOperandTypeChecker
This class allows multiple existing SqlOperandTypeChecker
rules to be
combined into one rule. For example, allowing an operand to be either string
or numeric could be done by:
Similary a rule that would only allow a numeric literal can be done by:CompositeOperandsTypeChecking newCompositeRule = new CompositeOperandsTypeChecking( Composition.OR, new SqlOperandTypeChecker[]{stringRule, numericRule});
CompositeOperandsTypeChecking newCompositeRule = new CompositeOperandsTypeChecking( Composition.AND, new SqlOperandTypeChecker[]{numericRule, literalRule});
Finally, creating a signature expecting a string for the first operand and a numeric for the second operand can be done by:
CompositeOperandsTypeChecking newCompositeRule = new CompositeOperandsTypeChecking( Composition.SEQUENCE, new SqlOperandTypeChecker[]{stringRule, numericRule});
For SEQUENCE composition, the rules must be instances of SqlSingleOperandTypeChecker, and signature generation is not supported. For AND composition, only the first rule is used for signature generation.
Nested Class Summary | |
---|---|
static class |
CompositeOperandTypeChecker.Composition
|
Field Summary | |
---|---|
private SqlOperandTypeChecker[] |
allowedRules
|
private CompositeOperandTypeChecker.Composition |
composition
|
Constructor Summary | |
---|---|
CompositeOperandTypeChecker(CompositeOperandTypeChecker.Composition composition,
SqlOperandTypeChecker... allowedRules)
|
Method Summary | |
---|---|
boolean |
checkOperandTypes(SqlCallBinding callBinding,
boolean throwOnFailure)
Checks the types of all operands to an operator call. |
boolean |
checkSingleOperandType(SqlCallBinding callBinding,
SqlNode node,
int iFormalOperand,
boolean throwOnFailure)
Checks the type of a single operand against a particular ordinal position within a formal operator signature. |
String |
getAllowedSignatures(SqlOperator op,
String opName)
Returns a string describing the allowed formal signatures of a call, e.g. |
SqlOperandCountRange |
getOperandCountRange()
|
SqlOperandTypeChecker[] |
getRules()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final SqlOperandTypeChecker[] allowedRules
private final CompositeOperandTypeChecker.Composition composition
Constructor Detail |
---|
public CompositeOperandTypeChecker(CompositeOperandTypeChecker.Composition composition, SqlOperandTypeChecker... allowedRules)
Method Detail |
---|
public SqlOperandTypeChecker[] getRules()
public String getAllowedSignatures(SqlOperator op, String opName)
SqlOperandTypeChecker
getAllowedSignatures
in interface SqlOperandTypeChecker
op
- the operator being checkedopName
- name to use for the operator in case of aliasing
public SqlOperandCountRange getOperandCountRange()
getOperandCountRange
in interface SqlOperandTypeChecker
public boolean checkSingleOperandType(SqlCallBinding callBinding, SqlNode node, int iFormalOperand, boolean throwOnFailure)
SqlSingleOperandTypeChecker
For example, when validating the actual call
the strategy for validating the operand Z might involve checking its type against the formal signature OP(W). In this case,C(X, Y, Z)
iFormalOperand
would be zero, even though the position of Z within
call C is two.
checkSingleOperandType
in interface SqlSingleOperandTypeChecker
callBinding
- description of the call being checked; this is only
provided for context when throwing an exception; the implementation
should NOT examine the operands of the call as part of the checknode
- the actual operand to be checkediFormalOperand
- the 0-based formal operand ordinalthrowOnFailure
- whether to throw an exception if check fails
(otherwise returns false in that case)
public boolean checkOperandTypes(SqlCallBinding callBinding, boolean throwOnFailure)
SqlOperandTypeChecker
checkOperandTypes
in interface SqlOperandTypeChecker
callBinding
- description of the call to be checkedthrowOnFailure
- whether to throw an exception if check fails
(otherwise returns false in that case)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |