parser: support nvarchar syntax (#4500)
This commit is contained in:
@ -532,6 +532,7 @@ var tokenMap = map[string]int{
|
||||
"YEAR": yearType,
|
||||
"CHAR": charType,
|
||||
"VARCHAR": varcharType,
|
||||
"NVARCHAR": nvarcharType,
|
||||
"BINARY": binaryType,
|
||||
"VARBINARY": varbinaryType,
|
||||
"TINYBLOB": tinyblobType,
|
||||
|
||||
@ -167,6 +167,7 @@ import (
|
||||
noWriteToBinLog "NO_WRITE_TO_BINLOG"
|
||||
null "NULL"
|
||||
numericType "NUMERIC"
|
||||
nvarcharType "NVARCHAR"
|
||||
oct "OCT"
|
||||
octetLength "OCTET_LENGTH"
|
||||
on "ON"
|
||||
@ -854,6 +855,7 @@ import (
|
||||
RegexpSym "REGEXP or RLIKE"
|
||||
IntoOpt "INTO or EmptyString"
|
||||
ValueSym "Value or Values"
|
||||
Varchar "{NATIONAL VARCHAR|VARCHAR|NVARCHAR}"
|
||||
TimeUnit "Time unit for 'DATE_ADD', 'DATE_SUB', 'ADDDATE', 'SUBDATE', 'EXTRACT'"
|
||||
TimestampUnit "Time unit for 'TIMESTAMPADD' and 'TIMESTAMPDIFF'"
|
||||
DeallocateSym "Deallocate or drop"
|
||||
@ -2457,7 +2459,7 @@ ReservedKeyword:
|
||||
| "HOUR_SECOND" | "IF" | "IGNORE" | "IN" | "INDEX" | "INFILE" | "INNER" | "INSERT" | "INT" | "INTO" | "INTEGER"
|
||||
| "INTERVAL" | "IS" | "JOIN" | "KEY" | "KEYS" | "KILL" | "LEADING" | "LEFT" | "LIKE" | "LIMIT" | "LINES" | "LOAD"
|
||||
| "LOCALTIME" | "LOCALTIMESTAMP" | "LOCK" | "LONGBLOB" | "LONGTEXT" | "MAXVALUE" | "MEDIUMBLOB" | "MEDIUMINT" | "MEDIUMTEXT"
|
||||
| "MINUTE_MICROSECOND" | "MINUTE_SECOND" | "MOD" | "NOT" | "NO_WRITE_TO_BINLOG" | "NULL" | "NUMERIC"
|
||||
| "MINUTE_MICROSECOND" | "MINUTE_SECOND" | "MOD" | "NOT" | "NO_WRITE_TO_BINLOG" | "NULL" | "NUMERIC" | "NVARCHAR"
|
||||
| "ON" | "OPTION" | "OR" | "ORDER" | "OUTER" | "PARTITION" | "PRECISION" | "PRIMARY" | "PROCEDURE" | "RANGE" | "READ"
|
||||
| "REAL" | "REFERENCES" | "REGEXP" | "RENAME" | "REPEAT" | "REPLACE" | "RESTRICT" | "REVOKE" | "RIGHT" | "RLIKE"
|
||||
| "SCHEMA" | "SCHEMAS" | "SECOND_MICROSECOND" | "SELECT" | "SET" | "SHOW" | "SMALLINT"
|
||||
@ -6038,13 +6040,13 @@ StringType:
|
||||
}
|
||||
$$ = x
|
||||
}
|
||||
| NationalOpt "VARCHAR" FieldLen OptBinary OptCharset OptCollate
|
||||
| Varchar FieldLen OptBinary OptCharset OptCollate
|
||||
{
|
||||
x := types.NewFieldType(mysql.TypeVarchar)
|
||||
x.Flen = $3.(int)
|
||||
x.Charset = $5.(string)
|
||||
x.Collate = $6.(string)
|
||||
if $4.(bool) {
|
||||
x.Flen = $2.(int)
|
||||
x.Charset = $4.(string)
|
||||
x.Collate = $5.(string)
|
||||
if $3.(bool) {
|
||||
x.Flag |= mysql.BinaryFlag
|
||||
}
|
||||
$$ = x
|
||||
@ -6114,6 +6116,12 @@ NationalOpt:
|
||||
{}
|
||||
| "NATIONAL"
|
||||
|
||||
Varchar:
|
||||
"NATIONAL" "VARCHAR"
|
||||
| "VARCHAR"
|
||||
| "NVARCHAR"
|
||||
|
||||
|
||||
BlobType:
|
||||
"TINYBLOB"
|
||||
{
|
||||
|
||||
@ -169,6 +169,11 @@ func (s *testParserSuite) TestSimple(c *C) {
|
||||
c.Assert(cs.Cols[0].Options, HasLen, 1)
|
||||
c.Assert(cs.Cols[0].Options[0].Tp, Equals, ast.ColumnOptionPrimaryKey)
|
||||
|
||||
// for issue #4497
|
||||
src = "create table t1(a NVARCHAR(100));"
|
||||
_, err = parser.ParseOneStmt(src, "", "")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
// for issue 2803
|
||||
src = "use quote;"
|
||||
_, err = parser.ParseOneStmt(src, "", "")
|
||||
|
||||
Reference in New Issue
Block a user