[
https://issues.apache.org/jira/browse/CALCITE-4820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17423848#comment-17423848
]
Stamatis Zampetakis commented on CALCITE-4820:
----------------------------------------------
[~cgivre] This looks like a duplicate of CALCITE-3486. Have you verified that
{{SqlConformance#allowExplicitRowValueConstructor}} is correctly set based on
your needs?
> INSERT Queries have keyword ROW inserted VALUES
> -----------------------------------------------
>
> Key: CALCITE-4820
> URL: https://issues.apache.org/jira/browse/CALCITE-4820
> Project: Calcite
> Issue Type: Bug
> Components: jdbc-adapter
> Affects Versions: 1.27.0
> Reporter: Charles Givre
> Priority: Major
>
> When parsing INSERT queries, Calcite inserts the keyword ROW in the VALUES
> clause. This causes queries to fail in MySQL and other databases.
> The function below produces the following output:
> INSERT INTO mysql_test.data_types
> VALUES(1, 2, 3.0, 4.0, '5.0', '2020-12-31', '12:00:00', '2015-12-30
> 17:55:55')
> Converted into:
> Postgres: INSERT INTO "postgresl_test"."data_types"
> VALUES *ROW*(1, 2, 3.0, 4.0, '5.0', '2020-12-31', '12:00:00', '2015-12-30
> 17:55:55')
> MySQL: INSERT INTO `mysql_test`.`data_types`
> VALUES *ROW*(1, 2, 3.0, 4.0, '5.0', '2020-12-31', '12:00:00', '2015-12-30
> 17:55:55')
> MSSQL: INSERT INTO [mssql_test].[data_types]
> VALUES *ROW*(1, 2, 3.0, 4.0, '5.0', '2020-12-31', '12:00:00', '2015-12-30
> 17:55:55')
> Ideally, the end result should be a valid INSERT query for the dialect used,
> and without the ROW keyword in the VALUES clause.
>
> {{public static String cleanQuery(String query, SqlDialect dialect) {}}
> {{ SqlParser.Config sqlParserConfig = SqlParser.configBuilder()}}
> {{ .setParserFactory(SqlDdlParserImpl.FACTORY)}}
> {{ .setConformance(SqlConformanceEnum.MYSQL_5)}}
> {{ .setCaseSensitive(true)}}
> {{ .setLex(Lex.MYSQL)}}
> {{ .build();}}
> {{ try {}}
> {{ SqlNode node = SqlParser.create(query, sqlParserConfig).parseQuery();}}
> {{ return node.toSqlString(dialect).getSql();}}
> {{ } catch (SqlParseException e) {}}
> {{ return null;}}
> {{ }}}
> {{}}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)