[ 
https://issues.apache.org/jira/browse/FLINK-7151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16948606#comment-16948606
 ] 

Timo Walther commented on FLINK-7151:
-------------------------------------

[~ZhenqiuHuang] I published FLIP-65 on the mailing list. The feedback is 
positive so far, so I hope we can implement it soon which would unblock this 
issue.

I discussed again with [~trohrmann] that all user facing changes should be 
handled according to the FLIP process. It would be great if you could open a 
FLIP for a function DDL. Also discussing the extensions that you have in mind 
and the research how other systems are doing it. For example, we should already 
consider how to specify different programming languages like JVM or Python (or 
even JavaScript?). The syntax {{AS 'class'}} might conflict with future syntax.

I did some quick research and found:

Postgres:
{code}
CREATE FUNCTION add(integer, integer) RETURNS integer
AS 'select $1 + $2;'
LANGUAGE SQL
{code}

I guess the current design is more similar to Hive:
{code}
CREATE FUNCTION addfunc AS 'com.example.hiveserver2.udf.add' USING JAR 
'hdfs:///path/to/jar'
{code}


> Add a basic function SQL DDL
> ----------------------------
>
>                 Key: FLINK-7151
>                 URL: https://issues.apache.org/jira/browse/FLINK-7151
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table SQL / API
>            Reporter: yuemeng
>            Assignee: Zhenqiu Huang
>            Priority: Critical
>              Labels: pull-request-available
>             Fix For: 1.10.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Based on create function and table.we can register a udf,udaf,udtf use sql:
> {code}
> CREATE FUNCTION [IF NOT EXISTS] [catalog_name.db_name.]function_name AS 
> class_name;
> DROP FUNCTION [IF EXISTS] [catalog_name.db_name.]function_name;
> ALTER FUNCTION [IF EXISTS] [catalog_name.db_name.]function_name RENAME TO 
> new_name;
> {code}
> {code}
> CREATE function 'TOPK' AS 
> 'com.xxxx.aggregate.udaf.distinctUdaf.topk.ITopKUDAF';
> INSERT INTO db_sink SELECT id, TOPK(price, 5, 'DESC') FROM kafka_source GROUP 
> BY id;
> {code}
> This ticket can assume that the function class is already loaded in classpath 
> by users. Advanced syntax like to how to dynamically load udf libraries from 
> external locations can be on a separate ticket.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to