Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
soar
提交
284281a6
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 搜索 >>
提交
284281a6
编写于
11月 14, 2018
作者:
martianzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix #101
上级
35977667
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
50 addition
and
56 deletion
+50
-56
Makefile
Makefile
+1
-1
common/config.go
common/config.go
+2
-2
common/meta.go
common/meta.go
+3
-3
common/meta_test.go
common/meta_test.go
+8
-8
database/explain.go
database/explain.go
+3
-3
database/mysql.go
database/mysql.go
+10
-16
database/trace.go
database/trace.go
+1
-1
vendor/vendor.json
vendor/vendor.json
+22
-22
未找到文件。
Makefile
浏览文件 @
284281a6
...
...
@@ -180,7 +180,7 @@ docker:
.PHONY
:
connect
connect
:
mysql
-h
127.0.0.1
-u
root
-p1tIsB1g3rt
mysql
-h
127.0.0.1
-u
root
-p1tIsB1g3rt
-c
.PHONY
:
main_test
main_test
:
install
...
...
common/config.go
浏览文件 @
284281a6
...
...
@@ -145,13 +145,13 @@ var Config = &Configuration{
Schema
:
"information_schema"
,
Charset
:
"utf8mb4"
,
Disable
:
true
,
Version
:
999
,
Version
:
999
99
,
},
TestDSN
:
&
dsn
{
Schema
:
"information_schema"
,
Charset
:
"utf8mb4"
,
Disable
:
true
,
Version
:
999
,
Version
:
999
99
,
},
AllowOnlineAsTest
:
false
,
DropTestTemporary
:
true
,
...
...
common/meta.go
浏览文件 @
284281a6
...
...
@@ -377,19 +377,19 @@ func timeStorageReq(dataType string, version int) int {
case
"date"
:
return
3
case
"time"
:
if
version
<
5
6
4
{
if
version
<
5
060
4
{
return
3
}
// 3 bytes + fractional seconds storage
return
3
+
extr
(
typeLength
[
0
])
case
"datetime"
:
if
version
<
5
6
4
{
if
version
<
5
060
4
{
return
8
}
// 5 bytes + fractional seconds storage
return
5
+
extr
(
typeLength
[
0
])
case
"timestamp"
:
if
version
<
5
6
4
{
if
version
<
5
060
4
{
return
4
}
// 4 bytes + fractional seconds storage
...
...
common/meta_test.go
浏览文件 @
284281a6
...
...
@@ -56,7 +56,7 @@ func TestGetDataTypeBase(t *testing.T) {
}
func
TestGetDataBytes
(
t
*
testing
.
T
)
{
cols5
6
4
:=
map
[
*
Column
]
int
{
cols5
060
4
:=
map
[
*
Column
]
int
{
// numeric type
{
Name
:
"col000"
,
DataType
:
"tinyint"
,
Character
:
"utf8"
}
:
1
,
{
Name
:
"col001"
,
DataType
:
"SMALLINT"
,
Character
:
"utf8"
}
:
2
,
...
...
@@ -91,13 +91,13 @@ func TestGetDataBytes(t *testing.T) {
{
Name
:
"col025"
,
DataType
:
"varchar(191)"
,
Character
:
"utf8mb4"
}
:
765
,
}
for
col
,
bytes
:=
range
cols5
6
4
{
if
got
:=
col
.
GetDataBytes
(
5
6
4
);
got
!=
bytes
{
t
.
Errorf
(
"Version 5
6
4, %s Not match, want %d, got %d"
,
col
.
Name
,
bytes
,
got
)
for
col
,
bytes
:=
range
cols5
060
4
{
if
got
:=
col
.
GetDataBytes
(
5
060
4
);
got
!=
bytes
{
t
.
Errorf
(
"Version 5
.6.
4, %s Not match, want %d, got %d"
,
col
.
Name
,
bytes
,
got
)
}
}
cols5
5
0
:=
map
[
*
Column
]
int
{
cols5
050
0
:=
map
[
*
Column
]
int
{
// numeric type
{
Name
:
"col000"
,
DataType
:
"tinyint"
,
Character
:
"utf8"
}
:
1
,
{
Name
:
"col001"
,
DataType
:
"SMALLINT"
,
Character
:
"utf8"
}
:
2
,
...
...
@@ -132,9 +132,9 @@ func TestGetDataBytes(t *testing.T) {
{
Name
:
"col025"
,
DataType
:
"varchar(191)"
,
Character
:
"utf8mb4"
}
:
765
,
}
for
col
,
bytes
:=
range
cols5
5
0
{
if
got
:=
col
.
GetDataBytes
(
5
5
0
);
got
!=
bytes
{
t
.
Errorf
(
"Version: 5
5
0, %s Not match, want %d, got %d"
,
col
.
Name
,
bytes
,
got
)
for
col
,
bytes
:=
range
cols5
050
0
{
if
got
:=
col
.
GetDataBytes
(
5
050
0
);
got
!=
bytes
{
t
.
Errorf
(
"Version: 5
.5.
0, %s Not match, want %d, got %d"
,
col
.
Name
,
bytes
,
got
)
}
}
}
database/explain.go
浏览文件 @
284281a6
...
...
@@ -473,7 +473,7 @@ func (db *Connector) supportExplainWrite() (bool, error) {
// 5.6以上版本支持 EXPLAIN UPDATE/DELETE 等语句,但需要开启写入
// 如开启了 read_only, EXPLAIN UPDATE/DELETE 也会受限制
if
common
.
Config
.
TestDSN
.
Version
>=
5
6
0
{
if
common
.
Config
.
TestDSN
.
Version
>=
5
060
0
{
readOnly
,
err
:=
db
.
SingleIntValue
(
"read_only"
)
if
err
!=
nil
{
return
false
,
err
...
...
@@ -541,7 +541,7 @@ func (db *Connector) executeExplain(sql string, explainType int, formatType int)
explainFormat
:=
""
switch
formatType
{
case
JSONFormatExplain
:
if
common
.
Config
.
TestDSN
.
Version
>=
5
6
0
{
if
common
.
Config
.
TestDSN
.
Version
>=
5
060
0
{
explainFormat
=
"FORMAT=JSON"
}
}
...
...
@@ -550,7 +550,7 @@ func (db *Connector) executeExplain(sql string, explainType int, formatType int)
switch
explainType
{
case
ExtendedExplainType
:
// 5.6以上extended关键字已经不推荐使用,8.0废弃了这个关键字
if
common
.
Config
.
TestDSN
.
Version
>=
5
6
0
{
if
common
.
Config
.
TestDSN
.
Version
>=
5
060
0
{
res
,
err
=
db
.
Query
(
"explain %s"
,
sql
)
}
else
{
res
,
err
=
db
.
Query
(
"explain extended %s"
,
sql
)
...
...
database/mysql.go
浏览文件 @
284281a6
...
...
@@ -121,29 +121,23 @@ func (db *Connector) Query(sql string, params ...interface{}) (*QueryResult, err
// Version 获取MySQL数据库版本
func
(
db
*
Connector
)
Version
()
(
int
,
error
)
{
version
:=
99999
// 从数据库中获取版本信息
res
,
err
:=
db
.
Query
(
"select @@version"
)
if
err
!=
nil
{
common
.
Log
.
Warn
(
"(db *Connector) Version() Error: %v"
,
err
)
return
-
1
,
err
return
version
,
err
}
// 从MySQL版本中获取版本号
var
reg
*
regexp
.
Regexp
var
v
int
reg
,
err
=
regexp
.
Compile
(
`[^0-9]+`
)
if
err
!=
nil
{
// 如果获取不到version信息,则以最新版本为准
v
=
999
return
v
,
err
}
version
:=
reg
.
ReplaceAllString
(
res
.
Rows
[
0
]
.
Str
(
0
),
""
)[
:
3
]
v
,
err
=
strconv
.
Atoi
(
version
)
if
err
!=
nil
{
// 如果获取不到version信息,则以最新版本为准
v
=
999
// MariaDB https://mariadb.com/kb/en/library/comment-syntax/
// MySQL https://dev.mysql.com/doc/refman/8.0/en/comments.html
versionStr
:=
strings
.
Split
(
res
.
Rows
[
0
]
.
Str
(
0
),
"-"
)[
0
]
versionSeg
:=
strings
.
Split
(
versionStr
,
"."
)
if
len
(
versionSeg
)
==
3
{
versionStr
=
fmt
.
Sprintf
(
"%s%02s%02s"
,
versionSeg
[
0
],
versionSeg
[
1
],
versionSeg
[
2
])
version
,
err
=
strconv
.
Atoi
(
versionStr
)
}
return
v
,
err
return
v
ersion
,
err
}
// Source execute sql from file
...
...
database/trace.go
浏览文件 @
284281a6
...
...
@@ -45,7 +45,7 @@ type TraceRow struct {
// Trace 执行SQL,并对其Trace
func
(
db
*
Connector
)
Trace
(
sql
string
,
params
...
interface
{})
(
*
QueryResult
,
error
)
{
common
.
Log
.
Debug
(
"Trace SQL: %s"
,
sql
)
if
common
.
Config
.
TestDSN
.
Version
<
5
6
0
{
if
common
.
Config
.
TestDSN
.
Version
<
5
060
0
{
return
nil
,
errors
.
New
(
"version < 5.6, not support trace"
)
}
...
...
vendor/vendor.json
浏览文件 @
284281a6
...
...
@@ -1016,68 +1016,68 @@
{
"checksumSHA1"
:
"w8FCRjH70gM6QttB9QrEh9Y1x64="
,
"path"
:
"vitess.io/vitess"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"aKn1oKcY74N8TRLm3Ayt7Q4bbI4="
,
"path"
:
"vitess.io/vitess/go/bytes2"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"JVCEN4UGRmg3TofIBdzZMZ3G0Ww="
,
"path"
:
"vitess.io/vitess/go/hack"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"e1WJ7vCnVrlQQQlc6n/FewCDMso="
,
"path"
:
"vitess.io/vitess/go/sqltypes"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"ntFIQYkBS51G6y+FEkjFW40+HOU="
,
"path"
:
"vitess.io/vitess/go/vt/log"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"XozR8bmeSR5KTe/nlUJkpJY2HKI="
,
"path"
:
"vitess.io/vitess/go/vt/proto/query"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"OnWsUHLDKcO3spwH0jD55SvKD24="
,
"path"
:
"vitess.io/vitess/go/vt/proto/topodata"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"sBAuZ/itMR8U8qbK4yLHxkP6Cpc="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtgate"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"pLWM+SPGZs3k+IhjktE/cGUlpM0="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtrpc"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"3ggEFYVEhMPxyhkKhRGw3x1eZ9M="
,
"path"
:
"vitess.io/vitess/go/vt/sqlparser"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
},
{
"checksumSHA1"
:
"oF4XzuOzwvj1iduX/lYqNSyY/HM="
,
"path"
:
"vitess.io/vitess/go/vt/vterrors"
,
"revision"
:
"
870177ca857e3bba2941a999174cc97d2c40c864
"
,
"revisionTime"
:
"2018-11-1
3T00:32:13
Z"
"revision"
:
"
3dc3648303ff7f553dc3c90fbc87e0709acf08f0
"
,
"revisionTime"
:
"2018-11-1
4T14:39:22
Z"
}
],
"rootPath"
:
"github.com/XiaoMi/soar"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录