Package org.apache.calcite.sql.fun
Class SqlCastFunction
java.lang.Object
org.apache.calcite.sql.SqlOperator
org.apache.calcite.sql.SqlFunction
org.apache.calcite.sql.fun.SqlCastFunction
public class SqlCastFunction
extends org.apache.calcite.sql.SqlFunction
SqlCastFunction. Note that the std functions are really singleton objects, because they always
get fetched via the StdOperatorTable. So you can't store any local info in the class and hence
the return type data is maintained in operand[1] through the validation phase.
Can be used for both SqlCall and RexCall. Note that the
SqlCall has two operands (expression and type), while the RexCall has one operand
(expression) and the type is obtained from RexNode.getType().
The class was copied over because of CALCITE-5017, in order to workaround the method SqlTypeUtil.canCastFrom(RelDataType, RelDataType, boolean). Line 141 in checkOperandTypes(SqlCallBinding, boolean) and new method canCastFrom(RelDataType, RelDataType).
- See Also:
-
SqlCastOperator
-
Field Summary
Fields inherited from class org.apache.calcite.sql.SqlOperator
kind, MDX_PRECEDENCE, NL -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancheckOperandTypes(org.apache.calcite.sql.SqlCallBinding callBinding, boolean throwOnFailure) Makes sure that the number and types of arguments are allowable.org.apache.calcite.sql.validate.SqlMonotonicitygetMonotonicity(org.apache.calcite.sql.SqlOperatorBinding call) org.apache.calcite.sql.SqlOperandCountRangegetSignatureTemplate(int operandsCount) org.apache.calcite.sql.SqlSyntaxorg.apache.calcite.rel.type.RelDataTypeinferReturnType(org.apache.calcite.sql.SqlOperatorBinding opBinding) voidunparse(org.apache.calcite.sql.SqlWriter writer, org.apache.calcite.sql.SqlCall call, int leftPrec, int rightPrec) Methods inherited from class org.apache.calcite.sql.SqlFunction
deriveType, getFunctionType, getNameAsId, getParamNames, getParamTypes, getSqlIdentifier, isQuantifierAllowed, validateCall, validateQuantifierMethods inherited from class org.apache.calcite.sql.SqlOperator
acceptCall, acceptCall, adjustType, allowsFraming, argumentMustBeScalar, checkOperandCount, constructArgNameList, constructArgTypeList, constructOperandList, createCall, createCall, createCall, createCall, createCall, createCall, createCall, deriveOperandType, equals, getAllowedSignatures, getAllowedSignatures, getKind, getLeftPrec, getMonotonicity, getName, getOperandTypeChecker, getOperandTypeInference, getReturnTypeInference, getRightPrec, getStrongPolicyInference, hashCode, inferReturnType, isAggregator, isDeterministic, isDynamicFunction, isGroup, isGroupAuxiliary, isName, isSymmetrical, leftPrec, not, preValidateCall, requiresDecimalExpansion, requiresOrder, requiresOver, reverse, rewriteCall, rightPrec, toString, unparseListClause, unparseListClause, validateOperands, validRexOperands
-
Constructor Details
-
SqlCastFunction
public SqlCastFunction()
-
-
Method Details
-
inferReturnType
public org.apache.calcite.rel.type.RelDataType inferReturnType(org.apache.calcite.sql.SqlOperatorBinding opBinding) - Overrides:
inferReturnTypein classorg.apache.calcite.sql.SqlOperator
-
getSignatureTemplate
- Overrides:
getSignatureTemplatein classorg.apache.calcite.sql.SqlOperator
-
getOperandCountRange
public org.apache.calcite.sql.SqlOperandCountRange getOperandCountRange()- Overrides:
getOperandCountRangein classorg.apache.calcite.sql.SqlOperator
-
checkOperandTypes
public boolean checkOperandTypes(org.apache.calcite.sql.SqlCallBinding callBinding, boolean throwOnFailure) Makes sure that the number and types of arguments are allowable. Operators (such as "ROW" and "AS") which do not check their arguments can override this method.- Overrides:
checkOperandTypesin classorg.apache.calcite.sql.SqlOperator
-
getSyntax
public org.apache.calcite.sql.SqlSyntax getSyntax()- Overrides:
getSyntaxin classorg.apache.calcite.sql.SqlFunction
-
unparse
public void unparse(org.apache.calcite.sql.SqlWriter writer, org.apache.calcite.sql.SqlCall call, int leftPrec, int rightPrec) - Overrides:
unparsein classorg.apache.calcite.sql.SqlFunction
-
getMonotonicity
public org.apache.calcite.sql.validate.SqlMonotonicity getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding call) - Overrides:
getMonotonicityin classorg.apache.calcite.sql.SqlOperator
-