Hi Benchao,

我想搭车问一下这个代码生成是全局仅一次还是每个 call 都会走一遍流程?或者是其他策略。

Best,
tison.


Benchao Li <libenc...@gmail.com> 于2020年5月16日周六 下午9:50写道:

> Hi,
>
> Flink内置函数的实现方式跟udf不太一样,很多函数是直接用的代码生成来做的。
>
> 下面是以blink planner为例,大概说下流程:
> 1. FlinkSqlOperatorTable 这个类里面放的是内置函数表,这个表会被calcite parse
> SQL的时候用到,直接把这些函数识别为具体的某个函数定义。
> 2.
>
> 然后再代码生成阶段,会识别到这些函数,根据不同的函数定义,生成不同的函数实现调用。这部分你可以直接看下`org.apache.flink.table.planner.codegen.calls`这个package下的代码。
> 3. 上面第2条说的主要是scalar function的生成方式,agg
>
> function还要特殊一点,这部分可以参考下`org.apache.flink.table.planner.functions.aggfunctions`这个package下的代码。
>
>
> venn <wxchunj...@163.com> 于2020年5月16日周六 下午3:53写道:
>
> > 各位大佬,请问下,flink 内置的 udf 的源码在什么位置,还有在哪里完成的函数注
> > 册? 非常感谢各位大佬回复
> >
> >
> >
> > Thanks a lot !
> >
> >
> >
> >
>
> --
>
> Benchao Li
> School of Electronics Engineering and Computer Science, Peking University
> Tel:+86-15650713730
> Email: libenc...@gmail.com; libenc...@pku.edu.cn
>

回复