[
https://issues.apache.org/jira/browse/CALCITE-5393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Zhengqiang Duan updated CALCITE-5393:
-------------------------------------
Description:
Hello, community, I found that in MySQL, VALUE can be used as a synonym for
VALUES when I execute the INSERT INTO ... VALUES(...) statement, but currently
Calcite's parser does not support such syntax, so I hope to add this feature
for MySQL.
source sql:insert into data_rule value(1,"string")
exception:
org.apache.calcite.sql.parser.SqlParseException: Encountered "value" at line 1,
column 23.
Was expecting one of:
"ABS" ...
"ARRAY" ...
"AVG" ...
"CARDINALITY" ...
"CASE" ...
"CAST" ...
"CEIL" ...
"CEILING" ...
"CHAR" ...
"CHAR_LENGTH" ...
"CHARACTER_LENGTH" ...
"CLASSIFIER" ...
"COALESCE" ...
"COLLECT" ...
"CONVERT" ...
"COUNT" ...
"COVAR_POP" ...
"COVAR_SAMP" ...
"CUME_DIST" ...
"CURRENT" ...
"CURRENT_CATALOG" ...
"CURRENT_DATE" ...
"CURRENT_DEFAULT_TRANSFORM_GROUP" ...
"CURRENT_PATH" ...
"CURRENT_ROLE" ...
"CURRENT_SCHEMA" ...
"CURRENT_TIME" ...
"CURRENT_TIMESTAMP" ...
"CURRENT_USER" ...
"CURSOR" ...
"DATE" ...
"DENSE_RANK" ...
"ELEMENT" ...
"EVERY" ...
"EXISTS" ...
"EXP" ...
"EXTRACT" ...
"FALSE" ...
"FIRST_VALUE" ...
"FLOOR" ...
"FUSION" ...
"GROUPING" ...
"HOUR" ...
"INTERSECTION" ...
"INTERVAL" ...
"JSON_ARRAY" ...
"JSON_ARRAYAGG" ...
"JSON_EXISTS" ...
"JSON_OBJECT" ...
"JSON_OBJECTAGG" ...
"JSON_QUERY" ...
"JSON_VALUE" ...
"LAG" ...
"LAST_VALUE" ...
"LEAD" ...
"LEFT" ...
"LN" ...
"LOCALTIME" ...
"LOCALTIMESTAMP" ...
"LOWER" ...
"MATCH_NUMBER" ...
"MAX" ...
"MIN" ...
"MINUTE" ...
"MOD" ...
"MONTH" ...
"MULTISET" ...
"NEW" ...
"NEXT" ...
"NOT" ...
"NTH_VALUE" ...
"NTILE" ...
"NULL" ...
"NULLIF" ...
"OCTET_LENGTH" ...
"OVERLAY" ...
"PERCENTILE_CONT" ...
"PERCENTILE_DISC" ...
"PERCENT_RANK" ...
"PERIOD" ...
"POSITION" ...
"POWER" ...
"PREV" ...
"RANK" ...
"REGR_COUNT" ...
"REGR_SXX" ...
"REGR_SYY" ...
"RIGHT" ...
"ROW" ...
"ROW_NUMBER" ...
"RUNNING" ...
"SECOND" ...
"SELECT" ...
"SESSION_USER" ...
"SOME" ...
"SPECIFIC" ...
"SQRT" ...
"STDDEV_POP" ...
"STDDEV_SAMP" ...
"SUBSTRING" ...
"SUM" ...
"SYSTEM_USER" ...
"TABLE" ...
"TIME" ...
"TIMESTAMP" ...
"TRANSLATE" ...
"TRIM" ...
"TRUE" ...
"TRUNCATE" ...
"UNIQUE" ...
"UNKNOWN" ...
"UPPER" ...
"USER" ...
"VALUES" ...
"VAR_POP" ...
"VAR_SAMP" ...
"WITH" ...
"YEAR" ...
<UNSIGNED_INTEGER_LITERAL> ...
<APPROX_NUMERIC_LITERAL> ...
<DECIMAL_NUMERIC_LITERAL> ...
<BINARY_STRING_LITERAL> ...
<QUOTED_STRING> ...
<PREFIXED_STRING_LITERAL> ...
<UNICODE_STRING_LITERAL> ...
<BIG_QUERY_DOUBLE_QUOTED_STRING> ...
<BIG_QUERY_QUOTED_STRING> ...
"(" ...
<LBRACE_D> ...
<LBRACE_T> ...
<LBRACE_TS> ...
<LBRACE_FN> ...
"?" ...
"+" ...
"-" ...
"/*+" ...
<BRACKET_QUOTED_IDENTIFIER> ...
<QUOTED_IDENTIFIER> ...
<BACK_QUOTED_IDENTIFIER> ...
<BIG_QUERY_BACK_QUOTED_IDENTIFIER> ...
<HYPHENATED_IDENTIFIER> ...
<IDENTIFIER> ...
<UNICODE_QUOTED_IDENTIFIER> ...
"EXTEND" ...
"." ...
at
org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserImpl.java:402)
at
org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParserImpl.java:155)
at
org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:156)
at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:171)
at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:196)
was:
I've read mysql doc, "insert into table [value|values] valuelist" is standard
sql ,but throw error when i parse the next source sql.
source sql:insert into data_rule value(1,"string")
exception:
org.apache.calcite.sql.parser.SqlParseException: Encountered "value" at line 1,
column 23.
Was expecting one of:
"ABS" ...
"ARRAY" ...
"AVG" ...
"CARDINALITY" ...
"CASE" ...
"CAST" ...
"CEIL" ...
"CEILING" ...
"CHAR" ...
"CHAR_LENGTH" ...
"CHARACTER_LENGTH" ...
"CLASSIFIER" ...
"COALESCE" ...
"COLLECT" ...
"CONVERT" ...
"COUNT" ...
"COVAR_POP" ...
"COVAR_SAMP" ...
"CUME_DIST" ...
"CURRENT" ...
"CURRENT_CATALOG" ...
"CURRENT_DATE" ...
"CURRENT_DEFAULT_TRANSFORM_GROUP" ...
"CURRENT_PATH" ...
"CURRENT_ROLE" ...
"CURRENT_SCHEMA" ...
"CURRENT_TIME" ...
"CURRENT_TIMESTAMP" ...
"CURRENT_USER" ...
"CURSOR" ...
"DATE" ...
"DENSE_RANK" ...
"ELEMENT" ...
"EVERY" ...
"EXISTS" ...
"EXP" ...
"EXTRACT" ...
"FALSE" ...
"FIRST_VALUE" ...
"FLOOR" ...
"FUSION" ...
"GROUPING" ...
"HOUR" ...
"INTERSECTION" ...
"INTERVAL" ...
"JSON_ARRAY" ...
"JSON_ARRAYAGG" ...
"JSON_EXISTS" ...
"JSON_OBJECT" ...
"JSON_OBJECTAGG" ...
"JSON_QUERY" ...
"JSON_VALUE" ...
"LAG" ...
"LAST_VALUE" ...
"LEAD" ...
"LEFT" ...
"LN" ...
"LOCALTIME" ...
"LOCALTIMESTAMP" ...
"LOWER" ...
"MATCH_NUMBER" ...
"MAX" ...
"MIN" ...
"MINUTE" ...
"MOD" ...
"MONTH" ...
"MULTISET" ...
"NEW" ...
"NEXT" ...
"NOT" ...
"NTH_VALUE" ...
"NTILE" ...
"NULL" ...
"NULLIF" ...
"OCTET_LENGTH" ...
"OVERLAY" ...
"PERCENTILE_CONT" ...
"PERCENTILE_DISC" ...
"PERCENT_RANK" ...
"PERIOD" ...
"POSITION" ...
"POWER" ...
"PREV" ...
"RANK" ...
"REGR_COUNT" ...
"REGR_SXX" ...
"REGR_SYY" ...
"RIGHT" ...
"ROW" ...
"ROW_NUMBER" ...
"RUNNING" ...
"SECOND" ...
"SELECT" ...
"SESSION_USER" ...
"SOME" ...
"SPECIFIC" ...
"SQRT" ...
"STDDEV_POP" ...
"STDDEV_SAMP" ...
"SUBSTRING" ...
"SUM" ...
"SYSTEM_USER" ...
"TABLE" ...
"TIME" ...
"TIMESTAMP" ...
"TRANSLATE" ...
"TRIM" ...
"TRUE" ...
"TRUNCATE" ...
"UNIQUE" ...
"UNKNOWN" ...
"UPPER" ...
"USER" ...
"VALUES" ...
"VAR_POP" ...
"VAR_SAMP" ...
"WITH" ...
"YEAR" ...
<UNSIGNED_INTEGER_LITERAL> ...
<APPROX_NUMERIC_LITERAL> ...
<DECIMAL_NUMERIC_LITERAL> ...
<BINARY_STRING_LITERAL> ...
<QUOTED_STRING> ...
<PREFIXED_STRING_LITERAL> ...
<UNICODE_STRING_LITERAL> ...
<BIG_QUERY_DOUBLE_QUOTED_STRING> ...
<BIG_QUERY_QUOTED_STRING> ...
"(" ...
<LBRACE_D> ...
<LBRACE_T> ...
<LBRACE_TS> ...
<LBRACE_FN> ...
"?" ...
"+" ...
"-" ...
"/*+" ...
<BRACKET_QUOTED_IDENTIFIER> ...
<QUOTED_IDENTIFIER> ...
<BACK_QUOTED_IDENTIFIER> ...
<BIG_QUERY_BACK_QUOTED_IDENTIFIER> ...
<HYPHENATED_IDENTIFIER> ...
<IDENTIFIER> ...
<UNICODE_QUOTED_IDENTIFIER> ...
"EXTEND" ...
"." ...
at
org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserImpl.java:402)
at
org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParserImpl.java:155)
at
org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:156)
at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:171)
at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:196)
> VALUE as an synonym for VALUES keyword (enabled in MySQL conformance)
> ---------------------------------------------------------------------
>
> Key: CALCITE-5393
> URL: https://issues.apache.org/jira/browse/CALCITE-5393
> Project: Calcite
> Issue Type: Bug
> Reporter: sweetboy
> Assignee: Zhengqiang Duan
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Hello, community, I found that in MySQL, VALUE can be used as a synonym for
> VALUES when I execute the INSERT INTO ... VALUES(...) statement, but
> currently Calcite's parser does not support such syntax, so I hope to add
> this feature for MySQL.
> source sql:insert into data_rule value(1,"string")
> exception:
> org.apache.calcite.sql.parser.SqlParseException: Encountered "value" at line
> 1, column 23.
> Was expecting one of:
> "ABS" ...
> "ARRAY" ...
> "AVG" ...
> "CARDINALITY" ...
> "CASE" ...
> "CAST" ...
> "CEIL" ...
> "CEILING" ...
> "CHAR" ...
> "CHAR_LENGTH" ...
> "CHARACTER_LENGTH" ...
> "CLASSIFIER" ...
> "COALESCE" ...
> "COLLECT" ...
> "CONVERT" ...
> "COUNT" ...
> "COVAR_POP" ...
> "COVAR_SAMP" ...
> "CUME_DIST" ...
> "CURRENT" ...
> "CURRENT_CATALOG" ...
> "CURRENT_DATE" ...
> "CURRENT_DEFAULT_TRANSFORM_GROUP" ...
> "CURRENT_PATH" ...
> "CURRENT_ROLE" ...
> "CURRENT_SCHEMA" ...
> "CURRENT_TIME" ...
> "CURRENT_TIMESTAMP" ...
> "CURRENT_USER" ...
> "CURSOR" ...
> "DATE" ...
> "DENSE_RANK" ...
> "ELEMENT" ...
> "EVERY" ...
> "EXISTS" ...
> "EXP" ...
> "EXTRACT" ...
> "FALSE" ...
> "FIRST_VALUE" ...
> "FLOOR" ...
> "FUSION" ...
> "GROUPING" ...
> "HOUR" ...
> "INTERSECTION" ...
> "INTERVAL" ...
> "JSON_ARRAY" ...
> "JSON_ARRAYAGG" ...
> "JSON_EXISTS" ...
> "JSON_OBJECT" ...
> "JSON_OBJECTAGG" ...
> "JSON_QUERY" ...
> "JSON_VALUE" ...
> "LAG" ...
> "LAST_VALUE" ...
> "LEAD" ...
> "LEFT" ...
> "LN" ...
> "LOCALTIME" ...
> "LOCALTIMESTAMP" ...
> "LOWER" ...
> "MATCH_NUMBER" ...
> "MAX" ...
> "MIN" ...
> "MINUTE" ...
> "MOD" ...
> "MONTH" ...
> "MULTISET" ...
> "NEW" ...
> "NEXT" ...
> "NOT" ...
> "NTH_VALUE" ...
> "NTILE" ...
> "NULL" ...
> "NULLIF" ...
> "OCTET_LENGTH" ...
> "OVERLAY" ...
> "PERCENTILE_CONT" ...
> "PERCENTILE_DISC" ...
> "PERCENT_RANK" ...
> "PERIOD" ...
> "POSITION" ...
> "POWER" ...
> "PREV" ...
> "RANK" ...
> "REGR_COUNT" ...
> "REGR_SXX" ...
> "REGR_SYY" ...
> "RIGHT" ...
> "ROW" ...
> "ROW_NUMBER" ...
> "RUNNING" ...
> "SECOND" ...
> "SELECT" ...
> "SESSION_USER" ...
> "SOME" ...
> "SPECIFIC" ...
> "SQRT" ...
> "STDDEV_POP" ...
> "STDDEV_SAMP" ...
> "SUBSTRING" ...
> "SUM" ...
> "SYSTEM_USER" ...
> "TABLE" ...
> "TIME" ...
> "TIMESTAMP" ...
> "TRANSLATE" ...
> "TRIM" ...
> "TRUE" ...
> "TRUNCATE" ...
> "UNIQUE" ...
> "UNKNOWN" ...
> "UPPER" ...
> "USER" ...
> "VALUES" ...
> "VAR_POP" ...
> "VAR_SAMP" ...
> "WITH" ...
> "YEAR" ...
> <UNSIGNED_INTEGER_LITERAL> ...
> <APPROX_NUMERIC_LITERAL> ...
> <DECIMAL_NUMERIC_LITERAL> ...
> <BINARY_STRING_LITERAL> ...
> <QUOTED_STRING> ...
> <PREFIXED_STRING_LITERAL> ...
> <UNICODE_STRING_LITERAL> ...
> <BIG_QUERY_DOUBLE_QUOTED_STRING> ...
> <BIG_QUERY_QUOTED_STRING> ...
> "(" ...
> <LBRACE_D> ...
> <LBRACE_T> ...
> <LBRACE_TS> ...
> <LBRACE_FN> ...
> "?" ...
> "+" ...
> "-" ...
> "/*+" ...
> <BRACKET_QUOTED_IDENTIFIER> ...
> <QUOTED_IDENTIFIER> ...
> <BACK_QUOTED_IDENTIFIER> ...
> <BIG_QUERY_BACK_QUOTED_IDENTIFIER> ...
> <HYPHENATED_IDENTIFIER> ...
> <IDENTIFIER> ...
> <UNICODE_QUOTED_IDENTIFIER> ...
> "EXTEND" ...
> "." ...
>
> at
> org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserImpl.java:402)
> at
> org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParserImpl.java:155)
> at
> org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:156)
> at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:171)
> at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:196)
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)