What im curious is about the completable future in the function signature (eval) public final void eval(CompletableFuture<Collection<RowData>> future, Object... keys)
is is injected automatically? Best On Mon, May 8, 2023 at 10:02 AM Giannis Polyzos <ipolyzos...@gmail.com> wrote: > Hi Biao, > yeah, this means that since it's a Table Function UDF, I need to combine > it with lateral correct? > I have tried both approaches to be honest. You can find attached the log > output with verbose=true for both queries > > On Mon, May 8, 2023 at 9:49 AM Biao Geng <biaoge...@gmail.com> wrote: > >> Hi Giannis, >> Would you mind executing SET 'sql-client.verbose' = 'true';. first in >> your SQL client and then run the above example to show the error output in >> the SQL client? >> For the complete example, you can refer to codes of >> HBaseRowDataAsyncLookupFunction. >> Besides, in your example, you actually implement an async user-defiend >> table function(see here >> <https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/functions/udfs/#table-functions> >> for >> more details about UDTF usage), not a scalar UDF. The usage could be >> different. >> >> Best, >> Biao Geng >> >> Giannis Polyzos <ipolyzos...@gmail.com> 于2023年5月8日周一 14:27写道: >> >>> just to illustrate with a simple example >>> >>> On Mon, May 8, 2023 at 7:20 AM Giannis Polyzos <ipolyzos...@gmail.com> >>> wrote: >>> >>>> Yes I have and the function is present in the catalog. >>>> And I have other udfs also registered, I’m just having issues with the >>>> Async one and can’t really find any examples. >>>> >>>> Best >>>> >>>> On Mon, 8 May 2023 at 3:46 AM, Shammon FY <zjur...@gmail.com> wrote: >>>> >>>>> Hi Giannis, >>>>> >>>>> Have you use "CREATE FUNCTION asyncfn AS 'Your full class name of >>>>> async function class'" or "CREATE TEMPORARY FUNCTION asyncfn AS 'Your full >>>>> class name of async function class'" to create a customized function named >>>>> "asyncfn" before it is used in your sql? >>>>> >>>>> The error message "No match found for function signature" usually >>>>> indicates that the function does not exist or the parameters do not match. >>>>> >>>>> Best, >>>>> Shammon FY >>>>> >>>>> On Sun, May 7, 2023 at 2:55 PM Giannis Polyzos <ipolyzos...@gmail.com> >>>>> wrote: >>>>> >>>>>> I can't really find any examples / docs for Flink's >>>>>> AsyncTableFunction and I have a hard time getting it to work. >>>>>> Is there any example you can share that just takes as input a String >>>>>> key and outputs lets say a record (returned by the lookup?) >>>>>> Also is not clear to me how the async happens internally. >>>>>> Is the future in the eval method signature used? >>>>>> >>>>>> I tried implementing eval methods like: >>>>>> *public final void eval(CompletableFuture<Collection<RowData>> >>>>>> future, Object... keys)* >>>>>> >>>>>> *or * >>>>>> >>>>>> >>>>>> *public void eval(CompletableFuture<Collection<Row>> result, String >>>>>> rowkey)* >>>>>> >>>>>> but in both cases if I do something like >>>>>> *SELECT asyncfn(accountId) from transactions;* >>>>>> I get >>>>>> *org.apache.calcite.sql.validate.SqlValidatorException: No match >>>>>> found for function signature asyncfn(<CHARACTER>)* >>>>>> >>>>>> Not sure what I am missing >>>>>> >>>>>> Thanks, >>>>>> Giannis >>>>>> >>>>>