From a34415a976aba51d0ce2767e8d3ac29ce0e0de57 Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 27 Nov 2017 13:38:09 +0800 Subject: [PATCH] bug fixed for sql parser. --- .../druid/sql/ast/statement/SQLCreateTableStatement.java | 7 +++++++ .../sql/dialect/mysql/parser/MySqlCreateTableParser.java | 4 ++-- .../alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java | 1 - 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java index 1c74fff992..52f99638e5 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java @@ -1025,6 +1025,13 @@ public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLS x.onCommitPreserveRows = onCommitPreserveRows; x.onCommitDeleteRows = onCommitDeleteRows; + + if (tableOptions != null) { + for (Map.Entry entry : tableOptions.entrySet()) { + SQLObject entryVal = entry.getValue().clone(); + x.tableOptions.put(entry.getKey(), entryVal); + } + } } public SQLName getStoredAs() { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java index 0750a418c8..d7bcb618c0 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java @@ -454,7 +454,7 @@ public class MySqlCreateTableParser extends SQLCreateTableParser { clause.setLinear(true); } - if (lexer.token() == Token.ALGORITHM) { + if (lexer.identifierEquals(FnvHash.Constants.ALGORITHM)) { lexer.nextToken(); accept(Token.EQ); clause.setAlgorithm(lexer.integerValue().shortValue()); @@ -642,7 +642,7 @@ public class MySqlCreateTableParser extends SQLCreateTableParser { clause.setLinear(true); } - if (lexer.token() == Token.ALGORITHM) { + if (lexer.identifierEquals(FnvHash.Constants.ALGORITHM)) { lexer.nextToken(); accept(Token.EQ); subPartitionKey.setAlgorithm(lexer.integerValue().shortValue()); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java index 6e30f7e0bd..cd61b47b96 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlLexer.java @@ -35,7 +35,6 @@ public class MySqlLexer extends Lexer { map.putAll(Keywords.DEFAULT_KEYWORDS.getKeywords()); - map.put("ALGORITHM", Token.ALGORITHM); map.put("DUAL", Token.DUAL); map.put("FALSE", Token.FALSE); map.put("IDENTIFIED", Token.IDENTIFIED);