Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-18164

null <> 'str' should be true

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Invalid
    • None
    • None
    • Table SQL / API
    • None

    Description

      In ISO SQL standard, boolean is three-value type, including true, false, unknown.

      And in Flink SQL, we also go with the SQL standard, and the unknown will be null. For example:
       

      SELECT null <> null  -- null
      SELECT null <> 'hello'  -- null
      SELECT null = null  -- null
      SELECT null <> 'hello'  -- null
      

       
      In where clause, we evaluate `null` boolean to `false` by default. For example:

      ... WHERE null <> null  -- evaluate to false, there is no output
      ... null <> 'hello'  -- evaluate to false, there is no output
      SELECT IF(null = null, 0, 1)  -- 1
      SELECT IF(null <> 'hello', 0, 1) -- 1
      

      To make null comparable to others, use can use IS [NOT] DISTINCT FROM. For example:

      SELECT null IS NOT DISTINCT FROM null  -- true
      SELECT null IS DISTINCT FROM 'hello'  -- true
      

       

      ~~~~~~~original description~~~~~~~

      Currently, if we compare null with other literals, the result will always be false.
      It's because the code gen always gives a default value (false) for the result. And I think it's a bug if `null <> 'str'` is false.

      It's reported from user-zh: http://apache-flink.147419.n8.nabble.com/flink-sql-null-false-td3640.html
      CC jark ykt836

      Attachments

        Activity

          People

            Unassigned Unassigned
            libenchao Benchao Li
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: