THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
private final Map<String, FunctionDefintion> tempSystemFunctions = new LinkedHashMap<>(); private final Map<FunctionIdentifier, FunctionDefinition> tempFunctions = new LinkedHashMap<>(); public void registerTempSystemScalarFunction(String name, ScalarFunction function) { // put into tempSystemFunctions } public void registerTempSystemTableFunction(String name, TableFunction function) { // put into tempSystemFunctions } public void registerTempSystemAggregateFunction(String name, AggregateFunction function) { // put into tempSystemFunctions } public void registerTempCatalogScalarFunction(ObjectIdentifier foi, ScalarFunction function) { // put into tempFunctions } public void registerTempCatalogTableFunction(ObjectIdentifier fi, TableFunction function) { // put into tempFunctions } public void registerTempCatalogAggregateFunction(ObjectIdentifier fi, AggregateFunction function) { // put into tempFunctions } public void dropTemporarySystemFunction(String name) {} public void dropTemporaryFunctiondropTemporaryCatalogFunction(FunctionIdentifier fi) {} public Optional<FunctionLookup.Result> lookupFunction(FunctionIdentifier fi) { if (fi.getObjectIdentifier().isPresent()) { // resolvePreciseFunctionReference(fi.getObjectIdentifier()); } else { resolveAmbiguousFunctionReference(fi.getName()); } } private Optional<FunctionLookup.Result> resolvePreciseFunctionReference(FunctionIdentifier fi) { // resolve order: // 1. Temporary functions // 2. Catalog functions } private Optional<FunctionLookup.Result> resolveAmbiguousFunctionReference(String name); // resolve order: // 1. Temporary system functions // 2. Builtin functions // 3. Temporary functions, in the current catalog/db // 2. Catalog functions, in the current catalog/db } |
...