Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
soar
提交
22a2a71c
S
soar
项目概览
Xiaomi
/
soar
9 个月 前同步成功
通知
373
Star
8512
Fork
1328
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
soar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
22a2a71c
编写于
11月 18, 2018
作者:
martianzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cspell check update, fix spell error
上级
017cce79
变更
13
展开全部
隐藏空白更改
内联
并排
Showing
13 changed file
with
2484 addition
and
2431 deletion
+2484
-2431
ast/meta.go
ast/meta.go
+9
-9
ast/meta_test.go
ast/meta_test.go
+2
-2
ast/node_array.go
ast/node_array.go
+1
-1
ast/pretty.go
ast/pretty.go
+1
-1
ast/pretty_test.go
ast/pretty_test.go
+1
-1
ast/rewrite.go
ast/rewrite.go
+6
-6
ast/token.go
ast/token.go
+7
-7
vendor/vendor.json
vendor/vendor.json
+24
-24
vendor/vitess.io/vitess/Dockerfile
vendor/vitess.io/vitess/Dockerfile
+3
-0
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
+1
-0
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
+2410
-2378
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
+17
-2
vendor/vitess.io/vitess/go/vt/sqlparser/token.go
vendor/vitess.io/vitess/go/vt/sqlparser/token.go
+2
-0
未找到文件。
ast/meta.go
浏览文件 @
22a2a71c
...
...
@@ -76,7 +76,7 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta {
err
:=
sqlparser
.
Walk
(
func
(
node
sqlparser
.
SQLNode
)
(
kontinue
bool
,
err
error
)
{
switch
expr
:=
node
.
(
type
)
{
case
*
sqlparser
.
DDL
:
// 如果
SQL是一个
DDL,则不需要继续遍历语法树了
// 如果
SQL 是一个
DDL,则不需要继续遍历语法树了
for
_
,
tb
:=
range
expr
.
FromTables
{
appendTable
(
tb
,
""
,
meta
)
}
...
...
@@ -196,7 +196,7 @@ var inEqOperators = map[string]string{
// 比如"not in",比如"exists"、 "not exists"等
}
// FindColumn 从传入的
node中获取所有可能加索引的的column
信息
// FindColumn 从传入的
node 中获取所有可能加索引的的 column
信息
func
FindColumn
(
node
sqlparser
.
SQLNode
)
[]
*
common
.
Column
{
common
.
Log
.
Debug
(
"Enter: FindColumn, Caller: %s"
,
common
.
Caller
())
var
result
[]
*
common
.
Column
...
...
@@ -228,7 +228,7 @@ func inEqIndexAble(node sqlparser.SQLNode) bool {
switch
expr
:=
node
.
(
type
)
{
case
*
sqlparser
.
ComparisonExpr
:
// like前百分号查询无法使用索引
// TODO
date类型的like
属于隐式数据类型转换,会导致无法使用索引
// TODO
: date 类型的 like
属于隐式数据类型转换,会导致无法使用索引
if
expr
.
Operator
==
"like"
||
expr
.
Operator
==
"not like"
{
switch
right
:=
expr
.
Right
.
(
type
)
{
case
*
sqlparser
.
SQLVal
:
...
...
@@ -326,7 +326,7 @@ func FindEQColsInWhere(node sqlparser.SQLNode) []*common.Column {
// FindINEQColsInWhere 获取非等值条件中可能需要加索引的列
// 将所有值得加索引的condition条件信息进行过滤
// TODO: 将
where条件中隐含的join条件合并到
join condition中
// TODO: 将
where 条件中隐含的 join 条件合并到
join condition中
func
FindINEQColsInWhere
(
node
sqlparser
.
SQLNode
)
[]
*
common
.
Column
{
common
.
Log
.
Debug
(
"Enter: FindINEQColsInWhere(), Caller: %s"
,
common
.
Caller
())
var
columns
[]
*
common
.
Column
...
...
@@ -520,8 +520,8 @@ func findJoinTable(expr sqlparser.TableExpr, meta common.Meta) {
}
// FindJoinCols 获取 join condition 中使用到的列(必须是 `列 operator 列` 的情况。
// 如果列对应的值或是function,则应该移到where condition中)
// 某些
where条件隐含在Join
条件中(INNER JOIN)
// 如果列对应的值或是
function,则应该移到where condition中)
// 某些
where 条件隐含在 join
条件中(INNER JOIN)
func
FindJoinCols
(
node
sqlparser
.
SQLNode
)
[][]
*
common
.
Column
{
common
.
Log
.
Debug
(
"Enter: FindJoinCols(), Caller: %s"
,
common
.
Caller
())
var
columns
[][]
*
common
.
Column
...
...
@@ -658,7 +658,7 @@ func FindSubquery(depth int, node sqlparser.SQLNode, queries ...string) []string
return
queries
}
// FindAllCondition 获取
AST中所有的condition
条件
// FindAllCondition 获取
AST 中所有的 condition
条件
func
FindAllCondition
(
node
sqlparser
.
SQLNode
)
[]
interface
{}
{
common
.
Log
.
Debug
(
"Enter: FindAllCondition(), Caller: %s"
,
common
.
Caller
())
var
conditions
[]
interface
{}
...
...
@@ -673,7 +673,7 @@ func FindAllCondition(node sqlparser.SQLNode) []interface{} {
return
conditions
}
// FindAllCols 获取
AST中某个节点下所有的
columns
// FindAllCols 获取
AST 中某个节点下所有的
columns
func
FindAllCols
(
node
sqlparser
.
SQLNode
,
targets
...
string
)
[]
*
common
.
Column
{
var
result
[]
*
common
.
Column
// 获取节点内所有的列
...
...
@@ -744,7 +744,7 @@ func GetSubqueryDepth(node sqlparser.SQLNode) int {
return
depth
}
// getColumnName 获取
node中Column
具体的定义以及名称
// getColumnName 获取
node 中 column
具体的定义以及名称
func
getColumnName
(
node
sqlparser
.
SQLNode
)
(
*
sqlparser
.
ColName
,
string
)
{
var
colName
*
sqlparser
.
ColName
str
:=
""
...
...
ast/meta_test.go
浏览文件 @
22a2a71c
...
...
@@ -65,9 +65,9 @@ func TestFindCondition(t *testing.T) {
}
eq
:=
FindEQColsInWhere
(
stmt
)
inEq
:=
FindINEQColsInWhere
(
stmt
)
fmt
.
Println
(
"WherEQ:"
)
fmt
.
Println
(
"Wher
e
EQ:"
)
pretty
.
Println
(
eq
)
fmt
.
Println
(
"WherINEQ:"
)
fmt
.
Println
(
"Wher
e
INEQ:"
)
pretty
.
Println
(
inEq
)
fmt
.
Println
()
}
...
...
ast/node_array.go
浏览文件 @
22a2a71c
...
...
@@ -28,7 +28,7 @@ import (
// NodeItem 链表节点
type
NodeItem
struct
{
ID
int
// NodeItem
在List
中的编号,与顺序有关
ID
int
// NodeItem
在 List
中的编号,与顺序有关
Prev
*
NodeItem
// 前一个节点
Self
sqlparser
.
SQLNode
// 自身指向的AST Node
Next
*
NodeItem
// 后一个节点
...
...
ast/pretty.go
浏览文件 @
22a2a71c
...
...
@@ -29,7 +29,7 @@ import (
// Pretty 格式化输出SQL
func
Pretty
(
sql
string
,
method
string
)
(
output
string
)
{
common
.
Log
.
Debug
(
"Pretty, Query: %s, method: %s"
,
sql
,
method
)
// 超出 Config.MaxPrettySQLLength 长度的
SQL会对其指纹进行
pretty
// 超出 Config.MaxPrettySQLLength 长度的
SQL 会对其指纹进行
pretty
if
len
(
sql
)
>
common
.
Config
.
MaxPrettySQLLength
{
fingerprint
:=
query
.
Fingerprint
(
sql
)
// 超出 Config.MaxFpPrettySqlLength 长度的指纹不会进行pretty
...
...
ast/pretty_test.go
浏览文件 @
22a2a71c
...
...
@@ -107,7 +107,7 @@ var TestSqlsPretty = []string{
"ALTER TABLE T2 ADD COLUMN D int FIRST;"
,
"ALTER TABLE T2 ADD COLUMN E int AFTER D;"
,
// REN
MA
E COLUMN
// REN
AM
E COLUMN
"ALTER TABLE t1 RENAME COLUMN a TO b"
,
// RENAME INDEX
...
...
ast/rewrite.go
浏览文件 @
22a2a71c
...
...
@@ -300,7 +300,7 @@ func (rw *Rewrite) RewriteDelimiter() *Rewrite {
return
rw
}
// RewriteStandard standard: 使用
vitess提供的String功能将抽象语法树转写回
SQL,注意:这可能转写失败。
// RewriteStandard standard: 使用
vitess 提供的 String 功能将抽象语法树转写回
SQL,注意:这可能转写失败。
func
(
rw
*
Rewrite
)
RewriteStandard
()
*
Rewrite
{
if
_
,
err
:=
sqlparser
.
Parse
(
rw
.
SQL
);
err
==
nil
{
rw
.
NewSQL
=
sqlparser
.
String
(
rw
.
Stmt
)
...
...
@@ -313,7 +313,7 @@ func (rw *Rewrite) RewriteAlwaysTrue() (reWriter *Rewrite) {
array
:=
NewNodeList
(
rw
.
Stmt
)
tNode
:=
array
.
Head
for
{
omitAwaysTrue
(
tNode
)
omitA
l
waysTrue
(
tNode
)
tNode
=
tNode
.
Next
if
tNode
==
nil
{
break
...
...
@@ -380,8 +380,8 @@ func isAlwaysTrue(expr *sqlparser.ComparisonExpr) bool {
return
result
}
// omitAwaysTrue 移除AST中的恒真条件
func
omitAwaysTrue
(
node
*
NodeItem
)
{
// omitA
l
waysTrue 移除AST中的恒真条件
func
omitA
l
waysTrue
(
node
*
NodeItem
)
{
if
node
==
nil
{
return
}
...
...
@@ -568,7 +568,7 @@ func omitAwaysTrue(node *NodeItem) {
}
}
omitAwaysTrue
(
node
.
Prev
)
omitA
l
waysTrue
(
node
.
Prev
)
}
// RewriteCountStar countstar: 将COUNT(col)改写为COUNT(*)
...
...
@@ -594,7 +594,7 @@ func (rw *Rewrite) RewriteCountStar() *Rewrite {
return
rw
}
// RewriteInnoDB
innodb: 为未指定Engine的表默认添加InnoDB引擎,将其他存储引擎转为
InnoDB
// RewriteInnoDB
InnoDB: 为未指定 Engine 的表默认添加 InnoDB 引擎,将其他存储引擎转为
InnoDB
func
(
rw
*
Rewrite
)
RewriteInnoDB
()
*
Rewrite
{
switch
create
:=
rw
.
Stmt
.
(
type
)
{
case
*
sqlparser
.
DDL
:
...
...
ast/token.go
浏览文件 @
22a2a71c
...
...
@@ -48,7 +48,7 @@ var cacheHits int
var
cacheMisses
int
var
tokenCache
map
[
string
]
Token
var
tokenBoudaries
=
[]
string
{
","
,
";"
,
":"
,
")"
,
"("
,
"."
,
"="
,
"<"
,
">"
,
"+"
,
"-"
,
"*"
,
"/"
,
"!"
,
"^"
,
"%"
,
"|"
,
"&"
,
"#"
}
var
tokenBou
n
daries
=
[]
string
{
","
,
";"
,
":"
,
")"
,
"("
,
"."
,
"="
,
"<"
,
">"
,
"+"
,
"-"
,
"*"
,
"/"
,
"!"
,
"^"
,
"%"
,
"|"
,
"&"
,
"#"
}
var
tokenReserved
=
[]
string
{
"ACCESSIBLE"
,
"ACTION"
,
"AGAINST"
,
"AGGREGATE"
,
"ALGORITHM"
,
"ALL"
,
"ALTER"
,
"ANALYSE"
,
"ANALYZE"
,
"AS"
,
"ASC"
,
...
...
@@ -117,14 +117,14 @@ var tokenReservedNewLine = []string{
}
var
regBoundariesString
string
var
regResrvedToplevelString
string
var
regRes
e
rvedToplevelString
string
var
regReservedNewlineString
string
var
regReservedString
string
var
regFunctionString
string
func
init
()
{
var
regs
[]
string
for
_
,
reg
:=
range
tokenBoudaries
{
for
_
,
reg
:=
range
tokenBou
n
daries
{
regs
=
append
(
regs
,
regexp
.
QuoteMeta
(
reg
))
}
regBoundariesString
=
"("
+
strings
.
Join
(
regs
,
"|"
)
+
")"
...
...
@@ -133,7 +133,7 @@ func init() {
for
_
,
reg
:=
range
tokenReservedTopLevel
{
regs
=
append
(
regs
,
regexp
.
QuoteMeta
(
reg
))
}
regResrvedToplevelString
=
"("
+
strings
.
Join
(
regs
,
"|"
)
+
")"
regRes
e
rvedToplevelString
=
"("
+
strings
.
Join
(
regs
,
"|"
)
+
")"
regs
=
make
([]
string
,
0
)
for
_
,
reg
:=
range
tokenReservedNewLine
{
...
...
@@ -300,7 +300,7 @@ var TokenString = map[int]string{
sqlparser
.
BIGINT
:
"bigint"
,
sqlparser
.
INTNUM
:
"intnum"
,
sqlparser
.
REAL
:
"real"
,
sqlparser
.
DOUBLE
:
"
b
ouble"
,
sqlparser
.
DOUBLE
:
"
d
ouble"
,
sqlparser
.
FLOAT_TYPE
:
"float_type"
,
sqlparser
.
DECIMAL
:
"decimal"
,
sqlparser
.
NUMERIC
:
"numeric"
,
...
...
@@ -662,7 +662,7 @@ func IsMysqlKeyword(name string) bool {
return
ok
}
// getNextToken 从
buf中获取
token
// getNextToken 从
buf 中获取
token
func
getNextToken
(
buf
string
,
previous
Token
)
Token
{
var
typ
int
// TOKEN_TYPE
...
...
@@ -756,7 +756,7 @@ func getNextToken(buf string, previous Token) Token {
// this makes it so in "mytable.from", "from" is not considered a reserved word
if
previous
.
Val
!=
"."
{
// Top Level Reserved Word
reservedToplevelReg
:=
regexp
.
MustCompile
(
`^(`
+
regResrvedToplevelString
+
`)($|\s|`
+
regBoundariesString
+
`)`
)
reservedToplevelReg
:=
regexp
.
MustCompile
(
`^(`
+
regRes
e
rvedToplevelString
+
`)($|\s|`
+
regBoundariesString
+
`)`
)
if
reservedToplevelReg
.
MatchString
(
sqlUpper
)
{
return
Token
{
Type
:
TokenTypeReservedToplevel
,
...
...
vendor/vendor.json
浏览文件 @
22a2a71c
...
...
@@ -1014,70 +1014,70 @@
"revisionTime"
:
"2018-03-28T19:50:20Z"
},
{
"checksumSHA1"
:
"
w8FCRjH70gM6QttB9QrEh9Y1x64
="
,
"checksumSHA1"
:
"
q7Bd5YJHsxvzEpiOBaYn+wEpqyU
="
,
"path"
:
"vitess.io/vitess"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"aKn1oKcY74N8TRLm3Ayt7Q4bbI4="
,
"path"
:
"vitess.io/vitess/go/bytes2"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"JVCEN4UGRmg3TofIBdzZMZ3G0Ww="
,
"path"
:
"vitess.io/vitess/go/hack"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"e1WJ7vCnVrlQQQlc6n/FewCDMso="
,
"path"
:
"vitess.io/vitess/go/sqltypes"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"ntFIQYkBS51G6y+FEkjFW40+HOU="
,
"path"
:
"vitess.io/vitess/go/vt/log"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"XozR8bmeSR5KTe/nlUJkpJY2HKI="
,
"path"
:
"vitess.io/vitess/go/vt/proto/query"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"OnWsUHLDKcO3spwH0jD55SvKD24="
,
"path"
:
"vitess.io/vitess/go/vt/proto/topodata"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"sBAuZ/itMR8U8qbK4yLHxkP6Cpc="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtgate"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"pLWM+SPGZs3k+IhjktE/cGUlpM0="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtrpc"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"
3ggEFYVEhMPxyhkKhRGw3x1eZ9M
="
,
"checksumSHA1"
:
"
2ZBC/pPjs13cocUf8PoMSvAO5u4
="
,
"path"
:
"vitess.io/vitess/go/vt/sqlparser"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
},
{
"checksumSHA1"
:
"oF4XzuOzwvj1iduX/lYqNSyY/HM="
,
"path"
:
"vitess.io/vitess/go/vt/vterrors"
,
"revision"
:
"
088b121f3ef2d0f0631499fcdf77eed9b701b5fe
"
,
"revisionTime"
:
"2018-11-16T
06:46:05
Z"
"revision"
:
"
9b8d987d43a54eeacb96cbd3c6015781eaee2144
"
,
"revisionTime"
:
"2018-11-16T
22:45:52
Z"
}
],
"rootPath"
:
"github.com/XiaoMi/soar"
...
...
vendor/vitess.io/vitess/Dockerfile
浏览文件 @
22a2a71c
...
...
@@ -8,6 +8,9 @@
# https://github.com/docker/hub-feedback/issues/292 is fixed.
FROM
vitess/bootstrap:mysql57
# Allows some docker builds to disable CGO
ARG
CGO_ENABLED=0
# Re-copy sources from working tree
USER
root
COPY
. /vt/src/vitess.io/vitess
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
浏览文件 @
22a2a71c
...
...
@@ -3105,6 +3105,7 @@ type ConvertType struct {
// this string is "character set" and this comment is required
const
(
CharacterSetStr
=
" character set"
CharsetStr
=
"charset"
)
// Format formats the node.
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
浏览文件 @
22a2a71c
此差异已折叠。
点击以展开。
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
浏览文件 @
22a2a71c
...
...
@@ -180,7 +180,7 @@ func skipToEnd(yylex interface{}) {
%token <bytes> NULLX AUTO_INCREMENT APPROXNUM SIGNED UNSIGNED ZEROFILL
// Supported SHOW tokens
%token <bytes> COLLATION DATABASES TABLES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS VSCHEMA_TABLES VITESS_TARGET FULL PROCESSLIST COLUMNS FIELDS
%token <bytes> COLLATION DATABASES TABLES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS VSCHEMA_TABLES VITESS_TARGET FULL PROCESSLIST COLUMNS FIELDS
ENGINES PLUGINS
// SET tokens
%token <bytes> NAMES CHARSET GLOBAL SESSION ISOLATION LEVEL READ WRITE ONLY REPEATABLE COMMITTED UNCOMMITTED SERIALIZABLE
...
...
@@ -1450,9 +1450,14 @@ show_statement:
{
$$ = &Show{Type: string($2) + " " + string($3)}
}
/* SHOW CHARACTER SET and SHOW CHARSET are equivalent */
| SHOW CHARACTER SET ddl_skip_to_end
{
$$ = &Show{Type: string($2) + " " + string($3)}
$$ = &Show{Type: CharsetStr}
}
| SHOW CHARSET ddl_skip_to_end
{
$$ = &Show{Type: string($2)}
}
| SHOW CREATE DATABASE ddl_skip_to_end
{
...
...
@@ -1483,6 +1488,10 @@ show_statement:
{
$$ = &Show{Type: string($2)}
}
| SHOW ENGINES
{
$$ = &Show{Type: string($2)}
}
| SHOW INDEX ddl_skip_to_end
{
$$ = &Show{Type: string($2)}
...
...
@@ -1491,6 +1500,10 @@ show_statement:
{
$$ = &Show{Type: string($2)}
}
| SHOW PLUGINS
{
$$ = &Show{Type: string($2)}
}
| SHOW PROCEDURE ddl_skip_to_end
{
$$ = &Show{Type: string($2)}
...
...
@@ -3254,6 +3267,7 @@ non_reserved_keyword:
| DECIMAL
| DOUBLE
| DUPLICATE
| ENGINES
| ENUM
| EXPANSION
| FLOAT_TYPE
...
...
@@ -3292,6 +3306,7 @@ non_reserved_keyword:
| ONLY
| OPTIMIZE
| PARTITION
| PLUGINS
| POINT
| POLYGON
| PRIMARY
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/token.go
浏览文件 @
22a2a71c
...
...
@@ -166,6 +166,7 @@ var keywords = map[string]int{
"elseif"
:
UNUSED
,
"enclosed"
:
UNUSED
,
"end"
:
END
,
"engines"
:
ENGINES
,
"enum"
:
ENUM
,
"escape"
:
ESCAPE
,
"escaped"
:
UNUSED
,
...
...
@@ -286,6 +287,7 @@ var keywords = map[string]int{
"outer"
:
OUTER
,
"outfile"
:
UNUSED
,
"partition"
:
PARTITION
,
"plugins"
:
PLUGINS
,
"point"
:
POINT
,
"polygon"
:
POLYGON
,
"precision"
:
UNUSED
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录