diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/calcite/sql/node/SemanticNode.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/calcite/sql/node/SemanticNode.java index 939260d09..d9a8a5fe5 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/calcite/sql/node/SemanticNode.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/parser/calcite/sql/node/SemanticNode.java @@ -89,12 +89,7 @@ public abstract class SemanticNode { } public static String getSql(SqlNode sqlNode, EngineType engineType) { - SemanticSqlDialect sqlDialect = SqlDialectFactory.getSqlDialect(engineType); - SqlWriterConfig config = SqlPrettyWriter.config().withDialect(sqlDialect) - .withKeywordsLowerCase(false).withClauseEndsLine(true).withAlwaysUseParentheses(false) - .withSelectListItemsOnSeparateLines(false).withUpdateSetListNewline(false).withIndentation(0); - - UnaryOperator sqlWriterConfigUnaryOperator = (c) -> config; + UnaryOperator sqlWriterConfigUnaryOperator = (c) -> getSqlWriterConfig(engineType); return sqlNode.toSqlString(sqlWriterConfigUnaryOperator).getSql(); } @@ -167,6 +162,18 @@ public abstract class SemanticNode { return sqlNode; } + private static SqlWriterConfig getSqlWriterConfig(EngineType engineType) { + SemanticSqlDialect sqlDialect = SqlDialectFactory.getSqlDialect(engineType); + SqlWriterConfig config = SqlPrettyWriter.config().withDialect(sqlDialect) + .withKeywordsLowerCase(false).withClauseEndsLine(true).withAlwaysUseParentheses(false) + .withSelectListItemsOnSeparateLines(false).withUpdateSetListNewline(false).withIndentation(0); + if (EngineType.MYSQL.equals(engineType)) { + //no backticks around function name + config = config.withQuoteAllIdentifiers(false); + } + return config; + } + private static void sqlVisit(SqlNode sqlNode, Map parseInfo) { SqlKind kind = sqlNode.getKind(); switch (kind) {