[
https://issues.apache.org/jira/browse/FLINK-6810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17261190#comment-17261190
]
Timo Walther commented on FLINK-6810:
-------------------------------------
I updated the description of this issue to consider FLINK-20522. Adding
built-in functions does not require changes at 6 different locations anymore.
> Add a set of built-in scalar functions to Table API & SQL
> ---------------------------------------------------------
>
> Key: FLINK-6810
> URL: https://issues.apache.org/jira/browse/FLINK-6810
> Project: Flink
> Issue Type: New Feature
> Components: Table SQL / API
> Affects Versions: 1.4.0
> Reporter: sunjincheng
> Assignee: sunjincheng
> Priority: Major
> Attachments: how to add a scalar function.png
>
>
> Umbrella issue for adding scalar functions such as mathematical-function
> {{LOG}}, date-functions {{DATEADD}}, string-functions {{LPAD}}, etc.
> *How to contribute a built-in scalar function*
> Thank you very much for contributing a built-in function. In order to make
> sure your contributions are in a good direction, it is recommended to read
> the following instructions.
> # Investigate the behavior of the function that you are going to contribute
> in major DBMSs. This is very important since we have to understand the exact
> semantics and type inference of the function.
> # It is recommended to add function for both SQL and Table API (Java, Scala,
> Python).
> # For every scalar function, add corresponding docs which should include a
> SQL, a Java/Scala/Python version in
> {{./docs/dev/table/functions/systemFunctions.md}}. Make sure your description
> of the function is accurate. Please do not simply copy documentation from
> other projects, especially if the projects are not Apache licensed.
> # Take overflow, handling of NULL, other data types and exceptions into
> consideration.
> There are different generations of function stacks in the Flink code base.
> The newest generation has been added in FLINK-20522 and is the recommended
> way of implementing a function similar to a regular user-defined function.
> Adding a built-in function requires changes in only 2 classes:
> {{BuiltInFunctionDefinitions}} for the definition and the class that contains
> the actual runtime logic.
> Tests should be added in {{org.apache.flink.table.planner.functions}}.
> See the reference implementation of the IFNULL function here:
> https://github.com/apache/flink/commit/df46f8948279d1ed89d7113919b4c4f720cf4199
--
This message was sent by Atlassian Jira
(v8.3.4#803005)