感谢大佬,我找到了。
所以说SQL类的内建函数实际上使用的是calcite的能力,而flink自己的内建函数是在table api中使用
> 2023年11月24日 17:07,Xuyang 写道:
>
> Hi,
> 关于你举的例子,如果编译了源码的话,可以在FlinkSqlParserImpl这个被动态生成的词法解析器类中找到PostfixRowOperator方法,大致是通过识别到IS
> NOT NULL这三个关键字,转化为Calcite的这个内置函数SqlStdOperatorTable.IS_NOT_NULL
>
>
>
>
> --
>
>
Hi,
关于你举的例子,如果编译了源码的话,可以在FlinkSqlParserImpl这个被动态生成的词法解析器类中找到PostfixRowOperator方法,大致是通过识别到IS
NOT NULL这三个关键字,转化为Calcite的这个内置函数SqlStdOperatorTable.IS_NOT_NULL
--
Best!
Xuyang
在 2023-11-24 15:15:04,"jinzhuguang" 写道:
>flink 1.18.0
>
>
>例如我写下一条SQL:
> select * from KafkaTable where
flink 1.18.0
例如我写下一条SQL:
select * from KafkaTable where id is not null;
IS NOT NULL应该属于系统内建函数,于是我找到相关代码:
public static final BuiltInFunctionDefinition IS_NOT_NULL =
BuiltInFunctionDefinition.newBuilder()
.name("isNotNull")
.kind(SCALAR)