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