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 >
