Github user kevinyu98 commented on the issue:
https://github.com/apache/spark/pull/20795
the reason I was thinking to split is for the below scenario:
In order to avoid cache twice for the external function name in the cache
as the scenario described by Dilip, we decide to use `getCurrentDatabase`
during `normalizeFuncName`.
but it will fail for the spark's builtin function, for example:
```
use currentdb;
select function1(), currentdb.function1() from ...
```
if the function1 is builtin function, for example `max`, and the
`currentdb` doesn't have the function `max`.
the first time, `max` will be found from builtin function checking
(`functionRegistry.functionExists(name)`), spark's builtin function checking
didn't use the
database name if you don't explicit specify. So the cache will store the
builtin function max as
`currentdb.max`
the second function `currentdb.max` will be found in the cache, even the
`currentdb `doesn't have the `max` function.
but during `ResolveFunctions` in the `analyzer`, `currentdb.max` can't be
resolved, and it will get `NoSuchFunctionException` for `max`.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]