Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
soar
提交
471e0d35
S
soar
项目概览
Xiaomi
/
soar
大约 2 年 前同步成功
通知
467
Star
8513
Fork
1329
代码
文件
提交
分支
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看板
提交
471e0d35
编写于
2月 20, 2019
作者:
martianzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix -report-type qurery-type bug
GRANT SELECT ON *.* to user@'host' REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';
上级
e3496fd7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
6 deletion
+18
-6
ast/testdata/TestQueryType.golden
ast/testdata/TestQueryType.golden
+3
-0
ast/token.go
ast/token.go
+9
-6
ast/token_test.go
ast/token_test.go
+6
-0
未找到文件。
ast/testdata/TestQueryType.golden
浏览文件 @
471e0d35
SELECT
SELECT
SELECT
SELECT
GRANT
REVOKE
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
...
...
ast/token.go
浏览文件 @
471e0d35
...
@@ -446,6 +446,7 @@ var mySQLKeywords = map[string]string{
...
@@ -446,6 +446,7 @@ var mySQLKeywords = map[string]string{
"geometry"
:
"GEOMETRY"
,
"geometry"
:
"GEOMETRY"
,
"geometrycollection"
:
"GEOMETRYCOLLECTION"
,
"geometrycollection"
:
"GEOMETRYCOLLECTION"
,
"global"
:
"GLOBAL"
,
"global"
:
"GLOBAL"
,
"grant"
:
"GRANT"
,
"group"
:
"GROUP"
,
"group"
:
"GROUP"
,
"group_concat"
:
"GROUP_CONCAT"
,
"group_concat"
:
"GROUP_CONCAT"
,
"having"
:
"HAVING"
,
"having"
:
"HAVING"
,
...
@@ -512,6 +513,7 @@ var mySQLKeywords = map[string]string{
...
@@ -512,6 +513,7 @@ var mySQLKeywords = map[string]string{
"reorganize"
:
"REORGANIZE"
,
"reorganize"
:
"REORGANIZE"
,
"repair"
:
"REPAIR"
,
"repair"
:
"REPAIR"
,
"replace"
:
"REPLACE"
,
"replace"
:
"REPLACE"
,
"revoke"
:
"REVOKE"
,
"right"
:
"RIGHT"
,
"right"
:
"RIGHT"
,
"rlike"
:
"REGEXP"
,
"rlike"
:
"REGEXP"
,
"rollback"
:
"ROLLBACK"
,
"rollback"
:
"ROLLBACK"
,
...
@@ -989,13 +991,14 @@ func NewLines(buf []byte) int {
...
@@ -989,13 +991,14 @@ func NewLines(buf []byte) int {
// QueryType get query type such as SELECT/INSERT/DELETE/CREATE/ALTER
// QueryType get query type such as SELECT/INSERT/DELETE/CREATE/ALTER
func
QueryType
(
sql
string
)
string
{
func
QueryType
(
sql
string
)
string
{
var
typ
string
tokens
:=
Tokenize
(
sql
)
tokens
:=
Tokenizer
(
sql
)
for
_
,
token
:=
range
tokens
{
for
_
,
token
:=
range
tokens
{
if
val
,
ok
:=
mySQLKeywords
[
token
.
Val
];
ok
{
// use strings.Fields for 'ALTER TABLE' token split
typ
=
val
for
_
,
tk
:=
range
strings
.
Fields
(
strings
.
TrimSpace
(
token
.
Val
))
{
break
if
val
,
ok
:=
mySQLKeywords
[
strings
.
ToLower
(
tk
)];
ok
{
return
val
}
}
}
}
}
return
typ
return
""
}
}
ast/token_test.go
浏览文件 @
471e0d35
...
@@ -241,8 +241,14 @@ func TestNewLines(t *testing.T) {
...
@@ -241,8 +241,14 @@ func TestNewLines(t *testing.T) {
func
TestQueryType
(
t
*
testing
.
T
)
{
func
TestQueryType
(
t
*
testing
.
T
)
{
common
.
Log
.
Debug
(
"Entering function: %s"
,
common
.
GetFunctionName
())
common
.
Log
.
Debug
(
"Entering function: %s"
,
common
.
GetFunctionName
())
var
testSQLs
=
[]
string
{
var
testSQLs
=
[]
string
{
`/*comment*/ select 1`
,
`(select 1)`
,
`(select 1)`
,
`grant select on *.* to user@'localhost'`
,
`REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';`
,
}
}
// fmt.Println(testSQLs[len(testSQLs)-1])
// fmt.Println(QueryType(testSQLs[len(testSQLs)-1]))
// return
err
:=
common
.
GoldenDiff
(
func
()
{
err
:=
common
.
GoldenDiff
(
func
()
{
for
_
,
buf
:=
range
append
(
testSQLs
,
common
.
TestSQLs
...
)
{
for
_
,
buf
:=
range
append
(
testSQLs
,
common
.
TestSQLs
...
)
{
fmt
.
Println
(
QueryType
(
buf
))
fmt
.
Println
(
QueryType
(
buf
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录