Hey Martijn,

Thanks for the feedback and the opinions!

In terms of your questions:

- Yes, the new syntax will support multiple artifacts, similar to JAR. This was 
an oversight in the syntax in the flip, thanks for pointing it out!
- I think mixing would be permissible at this stage, if we wish to scope this 
behaviour in future (by, say, limiting ARTIFACT to only non-Java functions) we 
would have to revisit it. Unless it makes sense at this point to prevent mixing 
in anticipation of this?
- Yes, it should. I’ll update the FLIP with this.

Thank you for the feedback!

Kind regards,
Mika

On 2026/01/14 09:45:36 Martijn Visser wrote:
> Hi Mika,
>
> Thanks for the FLIP and apologies for not replying earlier. I've reviewed
> it and overall I think this is a good proposal that addresses a need for
> future-proofing the CREATE FUNCTION syntax. The alignment with the Table
> API's generic ResourceUri approach is well-reasoned, and the backward
> compatibility story is clean.
>
> I have one question on the syntax when it comes to multiple artifacts.
>
> The current Flink documentation shows that CREATE FUNCTION supports
> multiple JARs:
> USING JAR '<path_to_filename>.jar' [, JAR '<path_to_filename>.jar']*
>
> However, the proposed syntax in the FLIP only shows a single artifact:
> [USING JAR|ARTIFACT 'artifact_path']
>
> Could you clarify:
> - Will the new syntax support multiple artifacts like `USING ARTIFACT
> 'a.jar', ARTIFACT 'b.jar'`?
> - Can we mix keywords within a single statement, e.g., `USING JAR 'a.jar',
> ARTIFACT 'b.jar'`?
> - Should the grammar be updated to: `[USING (JAR|ARTIFACT) 'artifact_path'
> [, (JAR|ARTIFACT) 'artifact_path']* ]`?
>
> Best regards,
>
> Martijn
>
> On Thu, Dec 4, 2025 at 8:50 PM Zander Matheson <[email protected]>
> wrote:
>
> > Thanks for creating the FLIP! This is a great move to continue to evolve
> > our SQL syntax to include future developments on the language front as well
> > as different types of artifacts like models.
> >
> > On Thu, Dec 4, 2025 at 9:39 AM Mika Naylor <[email protected]> wrote:
> >
> > > Hey everyone,
> > >
> > > I would like to kick off a discussion on FLIP-559: Add ARTIFACT keyword
> > > option in CREATE FUNCTION's USING clause [1].
> > >
> > > The current syntax for registering a user-defined function that depends
> > on
> > > a binary artifact requires using the JAR keyword within the CREATE
> > > FUNCTION’s USING clause. As Flink's ecosystem evolves, particularly with
> > > improved Python support (e.g., Python UDFs depending on wheel files or
> > > other archives), the JAR keyword becomes semantically incorrect and
> > > restrictive. We would like to add a more generic way to specify a
> > > dependency artifact by adding an ARTIFACT keyword that functions the same
> > > as JAR, but feels more format agnostic to the user.
> > >
> > > For more details, please refer to the FLIP [1]. There was also a previous
> > > pre-FLIP discussion thread [2].
> > >
> > > Would love any feedback and thoughts the community might have on this!
> > >
> > > Kind regards,
> > > Mika Naylor
> > >
> > > [1]
> > >
> > https://cwiki.apache.org/confluence/display/FLINK/FLIP-559%3A+Add+ARTIFACT+keyword+option+in+CREATE+FUNCTION%27s+USING+clause
> > > [2] https://lists.apache.org/thread/3hthbgrho598pr7ycsoygk8mqv84cmzt
> > >
> > >
> > >
> >
>

Reply via email to