private static void registerUDAF(MeasureTypeFactory<?> factory) { MeasureType<?> type = factory.createMeasureType(factory.getAggrFunctionName(), DataType.getType(factory.getAggrDataTypeName())); Map<String, Class<?>> udafs = type.getRewriteCalciteAggrFunctions(); if (type.needRewrite() == false || udafs == null) return; for (String udaf : udafs.keySet()) { udaf = udaf.toUpperCase(Locale.ROOT); if (udaf.equals(FunctionDesc.FUNC_COUNT_DISTINCT)) continue; // skip built-in function if (udafFactories.containsKey(udaf)) throw new IllegalStateException( "UDAF '" + udaf + "' was dup declared by " + udafFactories.get(udaf) + " and " + factory); udafFactories.put(udaf, factory); udafMap.put(udaf, udafs.get(udaf)); } }
public static MeasureType<?> create(String funcName, DataType dataType) { funcName = funcName.toUpperCase(Locale.ROOT); List<MeasureTypeFactory<?>> factory = factories.get(funcName); if (factory == null) factory = defaultFactory; // a special case where in early stage of sql parsing, the data type is unknown; only needRewrite() is required at that stage if (dataType == null) { return new NeedRewriteOnlyMeasureType(funcName, factory); } // the normal case, only one factory for a function if (factory.size() == 1) { return factory.get(0).createMeasureType(funcName, dataType); } // sometimes multiple factories are registered for the same function, then data types must tell them apart for (MeasureTypeFactory<?> f : factory) { if (f.getAggrDataTypeName().equals(dataType.getName())) return f.createMeasureType(funcName, dataType); } throw new IllegalStateException( "failed to create MeasureType with funcName: " + funcName + ", dataType: " + dataType); }
throw new IllegalArgumentException( "Aggregation function name '" + funcName + "' must be in upper case"); String dataTypeName = factory.getAggrDataTypeName(); if (!dataTypeName.equals(dataTypeName.toLowerCase(Locale.ROOT))) throw new IllegalArgumentException(
private static void registerUDAF(MeasureTypeFactory<?> factory) { MeasureType<?> type = factory.createMeasureType(factory.getAggrFunctionName(), DataType.getType(factory.getAggrDataTypeName())); Map<String, Class<?>> udafs = type.getRewriteCalciteAggrFunctions(); if (type.needRewrite() == false || udafs == null) return; for (String udaf : udafs.keySet()) { udaf = udaf.toUpperCase(Locale.ROOT); if (udaf.equals(FunctionDesc.FUNC_COUNT_DISTINCT)) continue; // skip built-in function if (udafFactories.containsKey(udaf)) throw new IllegalStateException( "UDAF '" + udaf + "' was dup declared by " + udafFactories.get(udaf) + " and " + factory); udafFactories.put(udaf, factory); udafMap.put(udaf, udafs.get(udaf)); } }
public static MeasureType<?> create(String funcName, DataType dataType) { funcName = funcName.toUpperCase(); List<MeasureTypeFactory<?>> factory = factories.get(funcName); if (factory == null) factory = defaultFactory; // a special case where in early stage of sql parsing, the data type is unknown; only needRewrite() is required at that stage if (dataType == null) { return new NeedRewriteOnlyMeasureType(funcName, factory); } // the normal case, only one factory for a function if (factory.size() == 1) { return factory.get(0).createMeasureType(funcName, dataType); } // sometimes multiple factories are registered for the same function, then data types must tell them apart for (MeasureTypeFactory<?> f : factory) { if (f.getAggrDataTypeName().equals(dataType.getName())) return f.createMeasureType(funcName, dataType); } throw new IllegalStateException(); };
public static MeasureType<?> create(String funcName, DataType dataType) { funcName = funcName.toUpperCase(Locale.ROOT); List<MeasureTypeFactory<?>> factory = factories.get(funcName); if (factory == null) factory = defaultFactory; // a special case where in early stage of sql parsing, the data type is unknown; only needRewrite() is required at that stage if (dataType == null) { return new NeedRewriteOnlyMeasureType(funcName, factory); } // the normal case, only one factory for a function if (factory.size() == 1) { return factory.get(0).createMeasureType(funcName, dataType); } // sometimes multiple factories are registered for the same function, then data types must tell them apart for (MeasureTypeFactory<?> f : factory) { if (f.getAggrDataTypeName().equals(dataType.getName())) return f.createMeasureType(funcName, dataType); } throw new IllegalStateException( "failed to create MeasureType with funcName: " + funcName + ", dataType: " + dataType); }
if (funcName.equals(funcName.toUpperCase()) == false) throw new IllegalArgumentException("Aggregation function name '" + funcName + "' must be in upper case"); String dataTypeName = factory.getAggrDataTypeName(); if (dataTypeName.equals(dataTypeName.toLowerCase()) == false) throw new IllegalArgumentException("Aggregation data type name '" + dataTypeName + "' must be in lower case");
throw new IllegalArgumentException( "Aggregation function name '" + funcName + "' must be in upper case"); String dataTypeName = factory.getAggrDataTypeName(); if (!dataTypeName.equals(dataTypeName.toLowerCase(Locale.ROOT))) throw new IllegalArgumentException(