mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
fix for pull request #3561
This commit is contained in:
@@ -2716,18 +2716,33 @@ public class SQLExprParser extends SQLParser {
|
||||
}
|
||||
}
|
||||
|
||||
if (typeNameHashCode == FnvHash.Constants.NATIONAL) {
|
||||
if (lexer.token == Token.IDENTIFIER) {
|
||||
String nationalName = lexer.stringVal();
|
||||
if ("varchar".equalsIgnoreCase(nationalName) || "char"
|
||||
.equalsIgnoreCase(nationalName)) {
|
||||
typeName = (" n" + lexer.stringVal().toLowerCase());
|
||||
lexer.nextToken();
|
||||
}
|
||||
if (isCharType(typeName)) {
|
||||
SQLCharacterDataType charType = new SQLCharacterDataType(typeName);
|
||||
|
||||
if (lexer.token == Token.LPAREN) {
|
||||
lexer.nextToken();
|
||||
SQLExpr arg = this.expr();
|
||||
arg.setParent(charType);
|
||||
charType.addArgument(arg);
|
||||
accept(Token.RPAREN);
|
||||
}
|
||||
|
||||
charType = (SQLCharacterDataType) parseCharTypeRest(charType);
|
||||
|
||||
if (lexer.token == Token.HINT) {
|
||||
List<SQLCommentHint> hints = this.parseHints();
|
||||
charType.setHints(hints);
|
||||
}
|
||||
|
||||
return charType;
|
||||
}
|
||||
|
||||
if (isCharType(typeName)) {
|
||||
if ("national".equalsIgnoreCase(typeName) &&
|
||||
(lexer.identifierEquals(FnvHash.Constants.CHAR)
|
||||
|| lexer.identifierEquals(FnvHash.Constants.VARCHAR))) {
|
||||
typeName += ' ' + lexer.stringVal();
|
||||
lexer.nextToken();
|
||||
|
||||
SQLCharacterDataType charType = new SQLCharacterDataType(typeName);
|
||||
|
||||
if (lexer.token == Token.LPAREN) {
|
||||
|
||||
+10
-9
@@ -26,16 +26,17 @@ public class MySqlCreateTableTest135 extends MysqlTest {
|
||||
assertEquals(1, statementList.size());
|
||||
|
||||
|
||||
assertEquals("CREATE TABLE MQ_TOPIC_RECORD (\n"
|
||||
+ "\tTOPIC_ID bigint(11) NOT NULL,\n"
|
||||
+ "\tBROKENNAME nvarchar(50),\n"
|
||||
+ "\tBROKENNAME2 nchar(50)\n"
|
||||
+ ");", stmt.toString());
|
||||
assertEquals("CREATE TABLE MQ_TOPIC_RECORD (\n" +
|
||||
"\tTOPIC_ID bigint(11) NOT NULL,\n" +
|
||||
"\tBROKENNAME national VARCHAR(50),\n" +
|
||||
"\tBROKENNAME2 national CHAR(50)\n" +
|
||||
");", stmt.toString());
|
||||
|
||||
assertEquals("create table MQ_TOPIC_RECORD (\n"
|
||||
+ "\tTOPIC_ID bigint(11) not null,\n"
|
||||
+ "\tBROKENNAME nvarchar(50),\n"
|
||||
+ "\tBROKENNAME2 nchar(50)\n" + ");", stmt.toLowerCaseString());
|
||||
assertEquals("create table MQ_TOPIC_RECORD (\n" +
|
||||
"\tTOPIC_ID bigint(11) not null,\n" +
|
||||
"\tBROKENNAME national VARCHAR(50),\n" +
|
||||
"\tBROKENNAME2 national CHAR(50)\n" +
|
||||
");", stmt.toLowerCaseString());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user