Class SqlWindowTableFunction
- java.lang.Object
-
- org.apache.calcite.sql.SqlOperator
-
- org.apache.calcite.sql.SqlFunction
-
- org.apache.calcite.sql.SqlWindowTableFunction
-
- org.apache.flink.table.planner.functions.sql.SqlWindowTableFunction
-
- All Implemented Interfaces:
org.apache.calcite.sql.SqlTableFunction
- Direct Known Subclasses:
SqlCumulateTableFunction
,SqlHopTableFunction
,SqlSessionTableFunction
,SqlTumbleTableFunction
public class SqlWindowTableFunction extends org.apache.calcite.sql.SqlWindowTableFunction
Base class for a table-valued function that computes windows. Examples includeTUMBLE
,HOP
,CUMULATE
andSESSION
.Note: we extend Calcite's
SqlWindowTableFunction
, to support additionalwindow_time
time attribute column which should keep the same type with original time attribute.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
SqlWindowTableFunction.AbstractOperandMetadata
Partial implementation of operand type checker.
-
Field Summary
Fields Modifier and Type Field Description static org.apache.calcite.sql.type.SqlReturnTypeInference
ARG0_TABLE_FUNCTION_WINDOWING
Type-inference strategy whereby the row type of a table function call is a ROW, which is combined from the row type of operand #0 (which is a TABLE) and two additional fields.protected static String
GAP
The gap interval, only used for SESSION window.protected static String
PARAM_STEP
The slide interval, only used for HOP window.
-
Constructor Summary
Constructors Constructor Description SqlWindowTableFunction(String name, org.apache.calcite.sql.type.SqlOperandMetadata operandMetadata)
Creates a window table function with a given name.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
argumentMustBeScalar(int ordinal)
org.apache.calcite.sql.type.SqlOperandMetadata
getOperandTypeChecker()
org.apache.calcite.sql.type.SqlReturnTypeInference
getRowTypeInference()
static org.apache.calcite.rel.type.RelDataType
inferRowType(org.apache.calcite.rel.type.RelDataTypeFactory typeFactory, org.apache.calcite.rel.type.RelDataType inputRowType, org.apache.calcite.rel.type.RelDataType timeAttributeType)
void
validateCall(org.apache.calcite.sql.SqlCall call, org.apache.calcite.sql.validate.SqlValidator validator, org.apache.calcite.sql.validate.SqlValidatorScope scope, org.apache.calcite.sql.validate.SqlValidatorScope operandScope)
-
Methods inherited from class org.apache.calcite.sql.SqlFunction
deriveType, getFunctionType, getNameAsId, getParamNames, getParamTypes, getSqlIdentifier, getSyntax, isQuantifierAllowed, unparse, validateQuantifier
-
Methods inherited from class org.apache.calcite.sql.SqlOperator
acceptCall, acceptCall, adjustType, allowsFraming, checkOperandCount, checkOperandTypes, constructArgNameList, constructArgTypeList, constructOperandList, createCall, createCall, createCall, createCall, createCall, createCall, createCall, equals, getAllowedSignatures, getAllowedSignatures, getKind, getLeftPrec, getMonotonicity, getMonotonicity, getName, getOperandCountRange, getOperandTypeInference, getReturnTypeInference, getRightPrec, getSignatureTemplate, getStrongPolicyInference, hashCode, inferReturnType, inferReturnType, isAggregator, isDeterministic, isDynamicFunction, isGroup, isGroupAuxiliary, isName, isSymmetrical, leftPrec, not, preValidateCall, requiresDecimalExpansion, requiresOrder, requiresOver, reverse, rewriteCall, rightPrec, toString, unparseListClause, unparseListClause, validateOperands, validRexOperands
-
-
-
-
Field Detail
-
PARAM_STEP
protected static final String PARAM_STEP
The slide interval, only used for HOP window.- See Also:
- Constant Field Values
-
GAP
protected static final String GAP
The gap interval, only used for SESSION window.- See Also:
- Constant Field Values
-
ARG0_TABLE_FUNCTION_WINDOWING
public static final org.apache.calcite.sql.type.SqlReturnTypeInference ARG0_TABLE_FUNCTION_WINDOWING
Type-inference strategy whereby the row type of a table function call is a ROW, which is combined from the row type of operand #0 (which is a TABLE) and two additional fields. The fields are as follows:window_start
: TIMESTAMP type to indicate a window's startwindow_end
: TIMESTAMP type to indicate a window's endwindow_time
: TIMESTAMP type with time attribute metadata to indicate a window's time attribute
-
-
Constructor Detail
-
SqlWindowTableFunction
public SqlWindowTableFunction(String name, org.apache.calcite.sql.type.SqlOperandMetadata operandMetadata)
Creates a window table function with a given name.
-
-
Method Detail
-
getOperandTypeChecker
public org.apache.calcite.sql.type.SqlOperandMetadata getOperandTypeChecker()
- Overrides:
getOperandTypeChecker
in classorg.apache.calcite.sql.SqlWindowTableFunction
-
getRowTypeInference
public org.apache.calcite.sql.type.SqlReturnTypeInference getRowTypeInference()
- Specified by:
getRowTypeInference
in interfaceorg.apache.calcite.sql.SqlTableFunction
- Overrides:
getRowTypeInference
in classorg.apache.calcite.sql.SqlWindowTableFunction
-
validateCall
public void validateCall(org.apache.calcite.sql.SqlCall call, org.apache.calcite.sql.validate.SqlValidator validator, org.apache.calcite.sql.validate.SqlValidatorScope scope, org.apache.calcite.sql.validate.SqlValidatorScope operandScope)
- Overrides:
validateCall
in classorg.apache.calcite.sql.SqlFunction
-
argumentMustBeScalar
public boolean argumentMustBeScalar(int ordinal)
Overrides because the first parameter of table-value function windowing is an explicit TABLE parameter, which is not scalar.
- Overrides:
argumentMustBeScalar
in classorg.apache.calcite.sql.SqlWindowTableFunction
-
inferRowType
public static org.apache.calcite.rel.type.RelDataType inferRowType(org.apache.calcite.rel.type.RelDataTypeFactory typeFactory, org.apache.calcite.rel.type.RelDataType inputRowType, org.apache.calcite.rel.type.RelDataType timeAttributeType)
-
-