Class SqlCastFunction


public class SqlCastFunction extends 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().

See Also:
  • SqlCastOperator
  • Constructor Details

    • SqlCastFunction

      public SqlCastFunction()
    • SqlCastFunction

      public SqlCastFunction(String name, SqlKind kind)
  • Method Details

    • deriveType

      public static RelDataType deriveType(RelDataTypeFactory typeFactory, RelDataType expressionType, RelDataType targetType, boolean safe)
      Derives the type of "CAST(expression AS targetType)".
    • getSignatureTemplate

      public String getSignatureTemplate(int operandsCount)
      Description copied from class: SqlOperator
      Returns a template describing how the operator signature is to be built. E.g for the binary + operator the template looks like "{1} {0} {2}" {0} is the operator, subsequent numbers are operands.
      Overrides:
      getSignatureTemplate in class SqlOperator
      Parameters:
      operandsCount - is used with functions that can take a variable number of operands
      Returns:
      signature template, or null to indicate that a default template will suffice
    • getOperandCountRange

      public SqlOperandCountRange getOperandCountRange()
      Description copied from class: SqlOperator
      Returns a constraint on the number of operands expected by this operator. Subclasses may override this method; when they don't, the range is derived from the SqlOperandTypeChecker associated with this operator.
      Overrides:
      getOperandCountRange in class SqlOperator
      Returns:
      acceptable range
    • checkOperandTypes

      public boolean checkOperandTypes(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 class SqlOperator
      Parameters:
      callBinding - description of call
      throwOnFailure - whether to throw an exception if check fails (otherwise returns false in that case)
      Returns:
      whether check succeeded
    • getSyntax

      public SqlSyntax getSyntax()
      Description copied from class: SqlOperator
      Returns the syntactic type of this operator, never null.
      Overrides:
      getSyntax in class SqlFunction
    • unparse

      public void unparse(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec)
      Description copied from class: SqlOperator
      Writes a SQL representation of a call to this operator to a writer, including parentheses if the operators on either side are of greater precedence.

      The default implementation of this method delegates to SqlSyntax.unparse(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlOperator, org.apache.calcite.sql.SqlCall, int, int).

      Overrides:
      unparse in class SqlFunction
    • getMonotonicity

      public SqlMonotonicity getMonotonicity(SqlOperatorBinding call)
      Description copied from class: SqlOperator
      Returns whether a call to this operator is monotonic.

      Default implementation returns SqlMonotonicity.NOT_MONOTONIC.

      Overrides:
      getMonotonicity in class SqlOperator
      Parameters:
      call - Call to this operator with particular arguments and information about the monotonicity of the arguments