THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
<T> Optional<T> getArgumentValue(int pos, Class<T> clazz);
/**
* Return whether a function in an aggregate query with grouping columns.
*
* @return Returns true if the number of grouping columns greater than zero.
* The other cases will return false.
*/
boolean hasGrouping();
/**
* Returns the function's name usually referencing the function in a catalog.
...
- Complete BuiltInFunctionDefinition and FunctionDefinition
- add standardSql field
- add isDeterministic field
- add monotonicity field
- add InputTypeStrategy to type inference
- CallContext support hasGrouping
- Introduce wrappers
- Introduce SqlOperandTypeCheckerWrapper
- Introduce SqlReturnTypeInferenceWrapper
- Introduce SqlOperandTypeInferenceWrapper
- Introduce SqlFunctionWrapper
- Introduce ExpressionConverter (If no type inference implementation for function, still do PlannerExpression way)
- Support that standardSql field, directly convert to SqlFunction of SqlStdOperatorTable
- Support SqlFunctionWrapper
- Use new Expression in RexNodeToExpressionConverter instead of PlannerExpression. (for remove PlannerExpressions)
- Start rework BuiltInFunctionDefinitions, With the judge of ResolveCallByArgumentsRule and ExpressionConverter. (definition.getTypeInference().getOutputTypeStrategy() != TypeStrategies.MISSING), we can implement FunctionDefinition one by one and drop PlannerExpressions one by one.
- Introduce TypeStrategies: CascadeTypeStrategy, ExplicitTypeStrategy, OrdinalTypeStrategy, ChainTypeStrategy
- Introduce TypeTransformations: ToNullableTransformation, FORCE_NULLABLE, TO_VARYING
- Introduce InputTypeStrategies: FIRST_KNOWN, OUTPUT_TYPE, BOOLEAN
- Introduce InputTypeValidators: CompositeTypeValidator, AnyTypeValidator, PassingTypeValidator, TypeFamilyTypeValidator, TypeRootTypeValidator, SameTypeValidator.
- Implement type inference for logic functions. And introduce a testing infrastructure to verify flink type inference and calcite type inference.
- Implement type inference for string functions.
- Implement type inference for math functions.
- Implement type inference for time functions.
- Implement type inference for other functions.
- Drop PlannerExpressions one by one.
- Apply things in blink-planner and add blink-planner extended functions
...