[ 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] [~fhue...@gmail.com] 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)