[
https://issues.apache.org/jira/browse/CALCITE-7772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated CALCITE-7772:
------------------------------------
Labels: pull-request-available (was: )
> ModelHandler.addFunctions should defer UDF class initialization until after
> shape validation
> --------------------------------------------------------------------------------------------
>
> Key: CALCITE-7772
> URL: https://issues.apache.org/jira/browse/CALCITE-7772
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Ruben Q L
> Assignee: Ruben Q L
> Priority: Minor
> Labels: pull-request-available
>
> `ModelHandler.addFunctions(...)` currently loads the UDF class (already
> controlled by a ClassNameFilter allowlist/denylist) named in the model with
> the single-argument `Class.forName(className)`, which uses `initialize=true`.
> Only after the class object is returned do the shape-check helpers
> (`TableFunctionImpl.create`, `TableMacroImpl.create`,
> `ScalarFunctionImpl.create` / `functions`, `AggregateFunctionImpl.create`)
> decide whether the class is usable as a function, and if none of them accepts
> it, `addFunctions` throws `"Not a valid function class: ..."` at the end of
> the method. That ordering means the class's static initializer runs even when
> the class turns out to be the wrong shape, which can be avoided. This will
> keep allowlist guarantee at "these classes may be used as functions", not
> "these classes' static initializers may be run at will".
--
This message was sent by Atlassian Jira
(v8.20.10#820010)