THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
private
final
Map<ObjectIdentifier, FunctionDefintion> tempFunctions =
new
LinkedHashMap<>();
Status
Current state: Under Discussion
...
Code Block | ||
---|---|---|
| ||
private final Map<String, FunctionDefintion> tempSystemFunctions = new LinkedHashMap<>(); private final Map<ObjectIdentifierMap<FunctionIdentifier, FunctionDefintion>FunctionDefinition> tempFunctions = new LinkedHashMap<>(); public void registerTemporarySystemScalarFunction(String name, ScalarFunction function) { // put into tempSystemFunctions } public void registerTemporarySystemTableFunction(String name, TableFunction function) { // put into tempSystemFunctions } public void registerTemporarySystemAggregateFunction(String name, AggregateFunction function) { // put into tempSystemFunctions } public void registerTemporaryScalarFunction(ObjectIdentifier oi, ScalarFunction function) { // put into tempFunctions } public void registerTemporaryTableFunction(ObjectIdentifier oi, TableFunction function) { // put into tempFunctions } public void registerTemporaryAggregateFunction(ObjectIdentifier oi, AggregateFunction function) { // put into tempFunctions } public void dropTemporarySystemFunction(String name) {} public void dropTemporaryFunction(ObjectIdentifier oi) {} public Optional<FunctionLookup.Result> lookupFunction(FunctionIdentifier fi) { if (fi.getObjectIdentifier().isPresent()) { // resolvePreciseFunctionReference(fi.getObjectIdentifier()); } else { resolveAmbiguousFunctionReference(fi.getName()); } } private Optional<FunctionLookup.Result> resolvePreciseFunctionReference(ObjectIdentifier oi) { // 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 } |
...