You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Sergey Nuyanzin (Jira)" <ji...@apache.org> on 2021/10/24 19:39:00 UTC

[jira] [Commented] (FLINK-24592) FlinkSQL multiline parser improvements

    [ https://issues.apache.org/jira/browse/FLINK-24592?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17433499#comment-17433499 ] 

Sergey Nuyanzin commented on FLINK-24592:
-----------------------------------------

Currently I have a version[1] supported all the mentioned problem queries.

May be a bit description: there is a continuation prompt from jline3 (FlinkSql depends on it).
I introduced the following logic:

||Prompt||Meaning||
|{{Flink SQL>}}|Ready for a new query|
|{{>}}|Waiting for next line of multiple-line query,
        waiting for completion of query with semicolon ({{;}}) |
|{{'>}}|Waiting for next line,
       waiting for completion of a string that began with a single quote ({{'}}) |
|{{`>}}|Waiting for next line,
       waiting for completion of a string that began with a back tick ({{`}}) |
|{{*\>}} |Waiting for next line,
       waiting for completion of a multi-line comment that began with {{/*}}| 
| {{)>}} | Waiting for next line,
       waiting for completion of a string that began with a round bracket, {{(}} |
|{{]>}} |Waiting for next line,
       waiting for completion of a string that began with a square bracket, {{[}} |
| {{extra )>}} |There is an extra round bracket {{)}}, that is not opened with {{(}} |
| {{extra ]>}} |There is an extra square bracket {{]}}, that is not opened with {{[}} |

Currently dialect related info like sql quote identifiers, one line comment is hardcoded in constants in {{SqlMultiLineParser}}. 
Probably retrieval of dialect related info from the current dialect could be added as further improvement.

In case there are any other suggestion or feedback - please let me know.
I will try to create a PR this week.

[1] https://github.com/snuyanzin/flink/tree/flinksqlclient

> FlinkSQL multiline parser improvements
> --------------------------------------
>
>                 Key: FLINK-24592
>                 URL: https://issues.apache.org/jira/browse/FLINK-24592
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table SQL / Client
>            Reporter: Sergey Nuyanzin
>            Priority: Major
>
> Currently existing multiline parser has limitations e.g.
> line could not end with semicolon e.g. as a part of field value, comment or column name.
> Also if a query contains '--' e.g. as a part of varchar field value then it fails.
> In case there is no objections I would put some efforts to improve this behavior;
> here it is a list of sample problem queries
> {code:sql}
> select 123; -- comment
> select 1 as `1--`;
> select '--';
> -- This query works if a user copy-pastes it to FlinkSQL, however it fails if a user types it in FlinkSQL
> select '1;
> ';
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)