Пример #1
0
 private SqlOperator toOp(String name, TableFunction fun) {
   List<RelDataType> argTypes = new ArrayList<RelDataType>();
   List<SqlTypeFamily> typeFamilies = new ArrayList<SqlTypeFamily>();
   Parameter p;
   for (net.hydromatic.optiq.Parameter o :
       (List<net.hydromatic.optiq.Parameter>) fun.getParameters()) {
     argTypes.add(o.getType());
     typeFamilies.add(SqlTypeFamily.ANY);
   }
   return new SqlFunction(
       name,
       SqlKind.OTHER_FUNCTION,
       new ExplicitReturnTypeInference(typeFactory.createType(fun.getElementType())),
       new ExplicitOperandTypeInference(argTypes.toArray(new RelDataType[argTypes.size()])),
       new FamilyOperandTypeChecker(
           typeFamilies.toArray(new SqlTypeFamily[typeFamilies.size()])),
       null);
 }
Пример #2
0
 private static boolean matches(
     RelDataTypeFactory typeFactory, TableFunction member, List<RelDataType> argumentTypes) {
   List<Parameter> parameters = member.getParameters();
   if (parameters.size() != argumentTypes.size()) {
     return false;
   }
   for (int i = 0; i < argumentTypes.size(); i++) {
     RelDataType argumentType = argumentTypes.get(i);
     Parameter parameter = parameters.get(i);
     if (!canConvert(argumentType, parameter.getType(typeFactory))) {
       return false;
     }
   }
   return true;
 }