Thank you for the feedback, Martijn. I made some adjustments in the PR - https://github.com/apache/flink/pull/27000 to address the comments and add some more documentation around the changes and differences with TableAPI.
On Thu, Oct 16, 2025 at 11:13 AM Martijn Visser <[email protected]> wrote: > Hi Zander, > > Thanks for putting together this FLIP! Adding the ARTIFACT keyword as a > generic alternative to JAR makes a lot of sense as we expand support for > different artifact types beyond JARs. Overall I'm +1 of this proposal. > > One consideration I wanted to bring up is the alignment with how functions > are registered programmatically via the Table API. Looking at the current > implementations: > > * In the Java Table API, the FunctionCatalog.createFunction methods already > use a generic List<ResourceUri> parameter [1] rather than anything > JAR-specific. So the underlying implementation there is already designed to > be artifact-type agnostic, which aligns well with your proposed SQL syntax > change. > * In the Python Table API, there's create_java_function [2] but it > currently relies on the Java classloader, though I imagine this could be > extended in the future for Python-specific artifacts. > > Given that the Table API already uses this more generic approach with > ResourceUri, your proposal to add ARTIFACT as a keyword option creates nice > consistency between the SQL and programmatic APIs. This should make it > easier for users who work with both interfaces. > > It might be worth documenting in the FLIP how this SQL change relates to > the existing Table API implementations, and whether any updates to those > APIs (particularly for non-JAR artifacts) are planned as follow-up work. > This would give a complete picture of the artifact handling across all > Flink's user-facing APIs. > > Overall, +1 from me. The backward compatibility and the minimal nature of > the change make this a clean improvement to Flink SQL. > > Thanks, > > Martijn > > [1] > > https://nightlies.apache.org/flink/flink-docs-stable/api/java/org/apache/flink/table/api/TableEnvironment.html#createFunction(java.lang.String,java.lang.String,java.util.List) > [2] > > https://nightlies.apache.org/flink/flink-docs-master/api/python/reference/pyflink.table/api/pyflink.table.TableEnvironment.create_java_function.html#pyflink.table.TableEnvironment.create_java_function > > On Mon, Sep 29, 2025 at 10:52 PM Zander Matheson <[email protected]> > wrote: > > > Hi Devs, > > > > The current syntax for Flink SQL requires all functions using artifacts > to > > use the JAR keyword. This FLIP would add a generic artifact keyword to > > allow for additional artifact types - zip, tarball etc. Although the > syntax > > for ARTIFACT is not found in the majority of SQL dialects, it is the most > > common noun used for UDFs across most documentation and platforms. > > > > The full details of the proposed FLIP are available here: > > > > > https://docs.google.com/document/d/1M5_TiOLInGiUm27apDcfR9D1I6jRYZDCokYsV9mNJk0/edit?usp=sharing > > > > A draft PR to make the changes has been started here: > > https://github.com/apache/flink/pull/27000 > > > > I look forward to feedback and discussion. > > > > Best, > > > > Zander > > >
