我们正在运行Flink作业,这些作业使用Kafka中的数据,执行SQL查询(使用SQL API)并将输出写入Kafka。
我们的作业被配置为永远运行,所以它们永远不会被完成(除非它们被保存点停止)。但是,我们注意到,对于一些(无效的)SQL查询,作业可以启动,但稍后会被完成。当我们包含field <> NULL
之类的内容时,就会出现这种情况。Flink的文档中说:
如果值1不等于值2,则返回TRUE;如果值1或值2为NULL,则返回UNKNOWN。
我们不清楚UNKNOWN是什么,也不清楚发生这种情况时作业会有什么React。无论如何,我们都希望它失败,而不是安静地完成。这会是Flink中的一个bug吗?这是预期的行为吗?
1条答案
按热度按时间qhhrdooz1#
SQL标准定义了一个三值逻辑系统,其中true、false和unknown作为比较的可能结果。您可以使用
field IS NOT NULL
而不是field <> NULL
,它将返回true或false。