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
andRexCall
. Note that theSqlCall
has two operands (expression and type), while theRexCall
has one operand (expression) and the type is obtained fromRexNode.getType()
.The class was copied over because of CALCITE-5017, in order to workaround the method
SqlTypeUtil.canCastFrom(RelDataType, RelDataType, boolean)
. Line 141 incheckOperandTypes(SqlCallBinding, boolean)
and new methodcanCastFrom(RelDataType, RelDataType)
.- See Also:
SqlCastOperator
-
-
Constructor Summary
Constructors Constructor Description SqlCastFunction()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
checkOperandTypes(org.apache.calcite.sql.SqlCallBinding callBinding, boolean throwOnFailure)
Makes sure that the number and types of arguments are allowable.org.apache.calcite.sql.validate.SqlMonotonicity
getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding call)
org.apache.calcite.sql.SqlOperandCountRange
getOperandCountRange()
String
getSignatureTemplate(int operandsCount)
org.apache.calcite.sql.SqlSyntax
getSyntax()
org.apache.calcite.rel.type.RelDataType
inferReturnType(org.apache.calcite.sql.SqlOperatorBinding opBinding)
void
unparse(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, validateQuantifier
-
Methods inherited from class org.apache.calcite.sql.SqlOperator
acceptCall, acceptCall, adjustType, allowsFraming, argumentMustBeScalar, checkOperandCount, constructArgNameList, constructArgTypeList, constructOperandList, createCall, createCall, createCall, createCall, createCall, createCall, createCall, 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
-
-
-
-
Method Detail
-
inferReturnType
public org.apache.calcite.rel.type.RelDataType inferReturnType(org.apache.calcite.sql.SqlOperatorBinding opBinding)
- Overrides:
inferReturnType
in classorg.apache.calcite.sql.SqlOperator
-
getSignatureTemplate
public String getSignatureTemplate(int operandsCount)
- Overrides:
getSignatureTemplate
in classorg.apache.calcite.sql.SqlOperator
-
getOperandCountRange
public org.apache.calcite.sql.SqlOperandCountRange getOperandCountRange()
- Overrides:
getOperandCountRange
in 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:
checkOperandTypes
in classorg.apache.calcite.sql.SqlOperator
-
getSyntax
public org.apache.calcite.sql.SqlSyntax getSyntax()
- Overrides:
getSyntax
in 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:
unparse
in classorg.apache.calcite.sql.SqlFunction
-
getMonotonicity
public org.apache.calcite.sql.validate.SqlMonotonicity getMonotonicity(org.apache.calcite.sql.SqlOperatorBinding call)
- Overrides:
getMonotonicity
in classorg.apache.calcite.sql.SqlOperator
-
-