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
> >
>

Reply via email to