Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿拉亮
soar
提交
22a2a71c
S
soar
项目概览
阿拉亮
/
soar
与 Fork 源项目一致
Fork自
Xiaomi / soar
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
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
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录