public abstract class OperandTypes extends Object
This class defines singleton instances of strategy objects for operand
type-checking. ReturnTypes
and InferTypes provide similar strategies
for operand type inference and operator return type inference.
Note to developers: avoid anonymous inner classes here except for unique, non-generalizable strategies; anything else belongs in a reusable top-level class. If you find yourself copying and pasting an existing strategy's anonymous inner class, you're making a mistake.
SqlOperandTypeChecker,
ReturnTypes,
InferTypes| Modifier and Type | Method and Description |
|---|---|
static SqlOperandTypeChecker |
and(SqlOperandTypeChecker... rules)
Creates a checker that passes if all of the rules pass.
|
static SqlSingleOperandTypeChecker |
and(SqlSingleOperandTypeChecker... rules)
Creates a single-operand checker that passes if all of the rules
pass.
|
static FamilyOperandTypeChecker |
family(List<SqlTypeFamily> families)
Creates a checker that passes if each operand is a member of a
corresponding family.
|
static FamilyOperandTypeChecker |
family(List<SqlTypeFamily> families,
Predicate<Integer> optional)
Creates a checker that passes if each operand is a member of a
corresponding family, and allows specified parameters to be optional.
|
static FamilyOperandTypeChecker |
family(SqlTypeFamily... families)
Creates a checker that passes if each operand is a member of a
corresponding family.
|
static SqlOperandMetadata |
operandMetadata(List<SqlTypeFamily> families,
Function<RelDataTypeFactory,List<RelDataType>> typesFactory,
IntFunction<String> operandName,
Predicate<Integer> optional)
Creates a checker for user-defined functions (including user-defined
aggregate functions, table functions, and table macros).
|
static SqlOperandTypeChecker |
or(SqlOperandTypeChecker... rules)
Creates a checker that passes if any one of the rules passes.
|
static SqlSingleOperandTypeChecker |
or(SqlSingleOperandTypeChecker... rules)
Creates a single-operand checker that passes if any one of the rules
passes.
|
static SqlOperandTypeChecker |
repeat(SqlOperandCountRange range,
SqlSingleOperandTypeChecker... rules)
Creates a checker that passes if all of the rules pass for each operand,
using a given operand count strategy.
|
static SqlOperandTypeChecker |
sequence(String allowedSignatures,
SqlSingleOperandTypeChecker... rules)
Creates an operand checker from a sequence of single-operand checkers.
|
static SqlOperandTypeChecker |
variadic(SqlOperandCountRange range) |
public static final SqlSingleOperandTypeChecker NILADIC
public static final SqlOperandTypeChecker VARIADIC
public static final SqlOperandTypeChecker ONE_OR_MORE
public static final SqlSingleOperandTypeChecker BOOLEAN
public static final SqlSingleOperandTypeChecker BOOLEAN_BOOLEAN
public static final SqlSingleOperandTypeChecker NUMERIC
public static final SqlSingleOperandTypeChecker INTEGER
public static final SqlSingleOperandTypeChecker NUMERIC_OPTIONAL_INTEGER
public static final SqlSingleOperandTypeChecker NUMERIC_INTEGER
public static final SqlSingleOperandTypeChecker NUMERIC_NUMERIC
public static final SqlSingleOperandTypeChecker EXACT_NUMERIC
public static final SqlSingleOperandTypeChecker EXACT_NUMERIC_EXACT_NUMERIC
public static final SqlSingleOperandTypeChecker BINARY
public static final SqlSingleOperandTypeChecker STRING
public static final FamilyOperandTypeChecker STRING_STRING
public static final FamilyOperandTypeChecker STRING_STRING_STRING
public static final FamilyOperandTypeChecker STRING_STRING_OPTIONAL_STRING
public static final SqlSingleOperandTypeChecker CHARACTER
public static final SqlSingleOperandTypeChecker DATETIME
public static final SqlSingleOperandTypeChecker DATE
public static final SqlSingleOperandTypeChecker TIMESTAMP
public static final SqlSingleOperandTypeChecker INTERVAL
public static final SqlSingleOperandTypeChecker CHARACTER_CHARACTER_DATETIME
public static final SqlSingleOperandTypeChecker PERIOD
public static final SqlSingleOperandTypeChecker PERIOD_OR_DATETIME
public static final FamilyOperandTypeChecker INTERVAL_INTERVAL
public static final SqlSingleOperandTypeChecker MULTISET
public static final SqlSingleOperandTypeChecker ARRAY
public static final SqlSingleOperandTypeChecker COLLECTION
public static final SqlSingleOperandTypeChecker COLLECTION_OR_MAP
public static final SqlSingleOperandTypeChecker NULLABLE_LITERAL
public static final SqlSingleOperandTypeChecker LITERAL
public static final SqlSingleOperandTypeChecker POSITIVE_INTEGER_LITERAL
public static final SqlSingleOperandTypeChecker UNIT_INTERVAL_NUMERIC_LITERAL
public static final SqlSingleOperandTypeChecker SAME_SAME
public static final SqlSingleOperandTypeChecker SAME_SAME_INTEGER
public static final SqlSingleOperandTypeChecker SAME_SAME_SAME
public static final SqlOperandTypeChecker SAME_VARIADIC
public static final SqlOperandTypeChecker AT_LEAST_ONE_SAME_VARIADIC
public static final SqlOperandTypeChecker COMPARABLE_ORDERED_COMPARABLE_ORDERED
public static final SqlOperandTypeChecker COMPARABLE_ORDERED
public static final SqlOperandTypeChecker COMPARABLE_UNORDERED_COMPARABLE_UNORDERED
public static final SqlSingleOperandTypeChecker STRING_SAME_SAME
public static final SqlSingleOperandTypeChecker STRING_SAME_SAME_SAME
public static final SqlSingleOperandTypeChecker STRING_STRING_INTEGER
public static final SqlSingleOperandTypeChecker STRING_STRING_INTEGER_INTEGER
public static final SqlSingleOperandTypeChecker STRING_INTEGER
public static final SqlSingleOperandTypeChecker STRING_INTEGER_INTEGER
public static final SqlSingleOperandTypeChecker STRING_INTEGER_OPTIONAL_INTEGER
public static final SqlSingleOperandTypeChecker CBSTRING_INTEGER
public static final SqlSingleOperandTypeChecker STRING_SAME_SAME_INTEGER
public static final SqlSingleOperandTypeChecker STRING_SAME_SAME_OR_ARRAY_SAME_SAME
public static final SqlSingleOperandTypeChecker ANY
public static final SqlSingleOperandTypeChecker ANY_ANY
public static final SqlSingleOperandTypeChecker ANY_IGNORE
public static final SqlSingleOperandTypeChecker IGNORE_ANY
public static final SqlSingleOperandTypeChecker ANY_NUMERIC
public static final SqlSingleOperandTypeChecker CURSOR
public static final SqlSingleOperandTypeChecker INTERVAL_SAME_SAME
public static final SqlSingleOperandTypeChecker NUMERIC_INTERVAL
public static final SqlSingleOperandTypeChecker INTERVAL_NUMERIC
public static final SqlSingleOperandTypeChecker DATETIME_INTERVAL
public static final SqlSingleOperandTypeChecker DATETIME_INTERVAL_INTERVAL
public static final SqlSingleOperandTypeChecker DATETIME_INTERVAL_INTERVAL_TIME
public static final SqlSingleOperandTypeChecker DATETIME_INTERVAL_TIME
public static final SqlSingleOperandTypeChecker INTERVAL_DATETIME
public static final SqlSingleOperandTypeChecker INTERVALINTERVAL_INTERVALDATETIME
public static final SqlSingleOperandTypeChecker PLUS_OPERATOR
public static final SqlSingleOperandTypeChecker MULTIPLY_OPERATOR
public static final SqlSingleOperandTypeChecker DIVISION_OPERATOR
public static final SqlSingleOperandTypeChecker MINUS_OPERATOR
public static final FamilyOperandTypeChecker MINUS_DATE_OPERATOR
public static final SqlSingleOperandTypeChecker NUMERIC_OR_INTERVAL
public static final SqlSingleOperandTypeChecker NUMERIC_OR_STRING
public static final SqlSingleOperandTypeChecker RECORD_COLLECTION
COLLECTIONpublic static final SqlSingleOperandTypeChecker SCALAR_OR_RECORD_COLLECTION
public static final SqlSingleOperandTypeChecker SCALAR_OR_RECORD_COLLECTION_OR_MAP
public static final SqlOperandTypeChecker MULTISET_MULTISET
public static final SqlOperandTypeChecker SET_OP
public static final SqlOperandTypeChecker RECORD_TO_SCALAR
public static FamilyOperandTypeChecker family(SqlTypeFamily... families)
public static FamilyOperandTypeChecker family(List<SqlTypeFamily> families, Predicate<Integer> optional)
public static FamilyOperandTypeChecker family(List<SqlTypeFamily> families)
public static SqlOperandMetadata operandMetadata(List<SqlTypeFamily> families, Function<RelDataTypeFactory,List<RelDataType>> typesFactory, IntFunction<String> operandName, Predicate<Integer> optional)
Unlike built-in functions, there is a fixed number of parameters, and the parameters have names. You can ask for the type of a parameter without providing a particular call (and with it actual arguments) but you do need to provide a type factory, and therefore the types are only good for the duration of the current statement.
public static SqlOperandTypeChecker or(SqlOperandTypeChecker... rules)
public static SqlOperandTypeChecker and(SqlOperandTypeChecker... rules)
public static SqlSingleOperandTypeChecker or(SqlSingleOperandTypeChecker... rules)
public static SqlSingleOperandTypeChecker and(SqlSingleOperandTypeChecker... rules)
public static SqlOperandTypeChecker sequence(String allowedSignatures, SqlSingleOperandTypeChecker... rules)
public static SqlOperandTypeChecker repeat(SqlOperandCountRange range, SqlSingleOperandTypeChecker... rules)
public static SqlOperandTypeChecker variadic(SqlOperandCountRange range)
Copyright © 2012-2022 Apache Software Foundation. All Rights Reserved.