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

TableFunction LEFT OUTER joins with ON predicates are broken

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 1.3.2, 1.4.0
    • 1.3.0, 1.4.0
    • Table SQL / API
    • None

    Description

      TableFunction left outer joins with predicates in the ON clause are broken. Apparently, the are no tests for this and it has never worked. I observed issues on several layers:

      • Table Function does not correctly validate equality predicate: leftOuterJoin(func1('c) as 'd, 'a.cast(Types.STRING) === 'd) is rejected because the predicate is not considered as an equality predicate (the cast needs to be pushed down).
      • Plans cannot be correctly translated: leftOuterJoin(func1('c) as 'd, 'c === 'd) gives an optimizer exception.
      • SQL queries get translated but produce incorrect results. For example SELECT a, b, c, d FROM MyTable LEFT OUTER JOIN LATERAL TABLE(tfunc(c)) AS T(d) ON d = c returns an empty result if the condition d = c never returns true. However, the outer side should be preserved and padded with nulls.

      So there seem to be many issues with table function outer joins. Especially, the wrong result produced by SQL queries need to be quickly fixed.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            xccui Xingcan Cui
            fhueske Fabian Hueske
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment