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

Fix string literal escaping throughout Table & SQL API

    XMLWordPrintableJSON

Details

    Description

      for example,  regular expression matches text ("\w") or number ("\d") :

      testAllApis(
        "foothebar".regexExtract("foo([\\w]+)", 1),       //OK, the method got 'foo([\w]+)'
        "'foothebar'.regexExtract('foo([\\\\w]+)', 1)",   //failed, the method got 'foo([\\w]+)' returns "", but if pass 'foo([\\w]+)' would get compile error.
        "REGEX_EXTRACT('foothebar', 'foo([\\\\w]+)', 1)", //OK, the method got 'foo([\w]+)' but must pass four '\'
        "thebar"
      )
      

      the "similar to" function has the same issue.

       

      Update:

      Proper escaping of quotes was not possible in the past for Table API. SQL and SQL Client
      were not standard compliant.

      Due to FLINK-8301 backslashes were considered in SQL literals, however, they
      should only be used in SQL `U&'\1234'` literals. For the Table API, the new
      logic relies on the Java/Scala escaping and uses duplicate quotes for escaping
      the quotes in expression strings. For SQL, we rely on unicode string literals
      with or without the UESCAPE clause. The SQL Client was using backslashes for
      escaping new lines. For the SQL Client, we allow unescaped new lines and
      use ';' for statement finalization; similar to other SQL clients.

       

      Attachments

        Activity

          People

            twalthr Timo Walther
            yanghua vinoyang
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: