SqlAggFunction createCustomAggFunction(String funcName, RelDataType returnType, Class<?> customAggFuncClz) { RelDataTypeFactory typeFactory = getCluster().getTypeFactory(); SqlIdentifier sqlIdentifier = new SqlIdentifier(funcName, new SqlParserPos(1, 1)); AggregateFunction aggFunction = AggregateFunctionImpl.create(customAggFuncClz); List<RelDataType> argTypes = new ArrayList<RelDataType>(); List<SqlTypeFamily> typeFamilies = new ArrayList<SqlTypeFamily>(); for (FunctionParameter o : aggFunction.getParameters()) { final RelDataType type = o.getType(typeFactory); argTypes.add(type); typeFamilies.add(Util.first(type.getSqlTypeName().getFamily(), SqlTypeFamily.ANY)); } return new SqlUserDefinedAggFunction(sqlIdentifier, ReturnTypes.explicit(returnType), InferTypes.explicit(argTypes), OperandTypes.family(typeFamilies), aggFunction, false, false, typeFactory); }
@SuppressWarnings("deprecation") public RelDataType getReturnType(RelDataTypeFactory typeFactory) { return function.getReturnType(typeFactory); } }
@SuppressWarnings("deprecation") public RelDataType getReturnType(RelDataTypeFactory typeFactory) { return function.getReturnType(typeFactory); } }
@SuppressWarnings("deprecation") public List<RelDataType> getParameterTypes( final RelDataTypeFactory typeFactory) { return Lists.transform(function.getParameters(), parameter -> parameter.getType(typeFactory)); }
@SuppressWarnings("deprecation") public RelDataType getReturnType(RelDataTypeFactory typeFactory) { return function.getReturnType(typeFactory); } }
@SuppressWarnings("deprecation") public List<RelDataType> getParameterTypes( final RelDataTypeFactory typeFactory) { return Lists.transform(function.getParameters(), new Function<FunctionParameter, RelDataType>() { public RelDataType apply(FunctionParameter input) { return input.getType(typeFactory); } }); }
private static SqlReturnTypeInference infer( final AggregateFunction function) { return opBinding -> { final RelDataTypeFactory typeFactory = opBinding.getTypeFactory(); final RelDataType type = function.getReturnType(typeFactory); return toSql(typeFactory, type); }; }
@SuppressWarnings("deprecation") public List<RelDataType> getParameterTypes( final RelDataTypeFactory typeFactory) { return Lists.transform(function.getParameters(), parameter -> parameter.getType(typeFactory)); }
private static SqlReturnTypeInference infer( final AggregateFunction function) { return opBinding -> { final RelDataTypeFactory typeFactory = opBinding.getTypeFactory(); final RelDataType type = function.getReturnType(typeFactory); return toSql(typeFactory, type); }; }
@Override public List<RelDataType> getParamTypes() { List<RelDataType> argTypes = new ArrayList<>(); for (FunctionParameter o : function.getParameters()) { final RelDataType type = o.getType(typeFactory); argTypes.add(type); } return toSql(argTypes); }
@Override public List<RelDataType> getParamTypes() { List<RelDataType> argTypes = new ArrayList<>(); for (FunctionParameter o : function.getParameters()) { final RelDataType type = o.getType(typeFactory); argTypes.add(type); } return toSql(argTypes); }
SqlAggFunction createCustomAggFunction(String funcName, RelDataType returnType, Class<?> customAggFuncClz) { RelDataTypeFactory typeFactory = getCluster().getTypeFactory(); SqlIdentifier sqlIdentifier = new SqlIdentifier(funcName, new SqlParserPos(1, 1)); AggregateFunction aggFunction = AggregateFunctionImpl.create(customAggFuncClz); List<RelDataType> argTypes = new ArrayList<RelDataType>(); List<SqlTypeFamily> typeFamilies = new ArrayList<SqlTypeFamily>(); for (FunctionParameter o : aggFunction.getParameters()) { final RelDataType type = o.getType(typeFactory); argTypes.add(type); typeFamilies.add(Util.first(type.getSqlTypeName().getFamily(), SqlTypeFamily.ANY)); } return new SqlUserDefinedAggFunction(sqlIdentifier, ReturnTypes.explicit(returnType), InferTypes.explicit(argTypes), OperandTypes.family(typeFamilies), aggFunction, false, false, typeFactory); }