Jianhui Dong created FLINK-25273: ------------------------------------ Summary: Some doubts about the FLINK-22848 Key: FLINK-25273 URL: https://issues.apache.org/jira/browse/FLINK-25273 Project: Flink Issue Type: Improvement Components: Table SQL / API Reporter: Jianhui Dong
I have been in contact with Flink and Calcite for a while, and I have some questions about this issue: https://issues.apache.org/jira/browse/FLINK-22848. First of all, the discussion about this issue mentioned that since calcite did not support the syntax analysis of set a=b (without quotes), regular expressions were used. However, I checked the commit history some days ago, and I found that calcite should already support SET syntax parsing (see SqlSetOption) in v1.14 or even earlier. but its problem is that it would recognize the `true/false/unknown/null` tokens as keywords, causing the parsing to be worse than expected, but this problem can be solved by restricting the syntax, like use '' in the issue FLINK-22848. Then I investigated the earliest version of flink that introduced calcite, flink should have introduced Calcite 1.16 in 1.5 at the earliest version. At that time, calcite should already support the syntax of SET a=b (without quotes), so I would like to find out What exactly does the "not supported" mentioned in the issue FLINK-22848 means? Maybe you can give a more specific case. In addition, I also have some doubts about the results of the discussion of the issue. I think it is indeed a more elegant solution to use the SQL parser to analyze it, but When calcite has built-in support for SET grammar, why do we need to extend the SET grammar to re-support it? Even this change may cause backward-incompatible. In my personal opinion of view, is that we can solve this problem by adding special restrictions on the above tokens on the basis of native Calcite analysis, such as in the user manual because values such as `unknown` and `null` are meaningless in the production environment. -- This message was sent by Atlassian Jira (v8.20.1#820001)