[
https://issues.apache.org/jira/browse/FLINK-11242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16731759#comment-16731759
]
sunjincheng commented on FLINK-11242:
-------------------------------------
Hi [~dian.fu] Thanks for the comment, we using calcite parsing the flink SQL,
and calcite have the NULL type(SqlTypeName.NULL), So in SQL `col isNull` not
equal to `col = null` 。But In flink we have no NULL type, we only have NULL
value with specific data type, e.g: Null(STRING). IMO. The problem is how do we
convert `col isNull` and ` col === Null(type)` to the correct RexNode. Form
the view of user, they never know NULL type, in the filter expression, they may
want check col is null by using ` col === Null(type)` .
When the user uses `col === Null(Type)`, flink does not report an error. In
fact, the current implementation where ( `col === Null(Type)`) will always get
the empty data, which is not what the user expects.
I am not sure if my point certain, but from the point of user view, `col ===
Null(Type)` equal to `col.isNull` will meet the user's expectations.
What do you think? [~dian.fu] [~tiwalter] [[email protected]] Welcome any
feedback ...
> The predicate `'o_c_id === Null(Types.STRING)` not work in TableAPI
> -------------------------------------------------------------------
>
> Key: FLINK-11242
> URL: https://issues.apache.org/jira/browse/FLINK-11242
> Project: Flink
> Issue Type: Bug
> Components: Table API & SQL
> Affects Versions: 1.8.0
> Reporter: sunjincheng
> Assignee: Dian Fu
> Priority: Major
>
> Schema:
> {code:java}
> Table(c_id:String, o_c_id:String){code}
> Data:
> {code:java}
> c_001,c_001
> c_002,c_002
> c_003,null{code}
> TableAPI:
> {code:java}
> val result = tab
> .select('c_id, 'o_c_id)
> .where('o_c_id === Null(Types.STRING)){code}
> Result:
> We expect `c_003, null`, but got empty.
> BTW, we can got the correct result by follows TableAPI:
> {code:java}
> val result = tab
> .select('c_id, 'o_c_id)
> .where('o_c_id isNull){code}
>
> I think is better for we let `.where('o_c_id === Null(Types.STRING))` work
> well. What do you think?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)