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