Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
soar
提交
11f1bc33
S
soar
项目概览
Xiaomi
/
soar
8 个月 前同步成功
通知
373
Star
8513
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 搜索 >>
提交
11f1bc33
编写于
11月 10, 2018
作者:
martianzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
daily update
1. update vitess dependency 2. explain database prefix check
上级
347ad1db
变更
9
展开全部
隐藏空白更改
内联
并排
Showing
9 changed file
with
1531 addition
and
1385 deletion
+1531
-1385
CHANGES.md
CHANGES.md
+7
-3
README.md
README.md
+1
-1
README_EN.md
README_EN.md
+1
-1
cmd/soar/soar.go
cmd/soar/soar.go
+1
-1
env/env.go
env/env.go
+2
-2
vendor/vendor.json
vendor/vendor.json
+23
-23
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
+17
-7
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
+1455
-1347
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
+24
-0
未找到文件。
CHANGES.md
浏览文件 @
11f1bc33
# 更新日志
# CHANGELOG
## 2018-11
-
TODO: english translation
-
DOING: english translation
-
add -cleanup-test-database command-line arg
-
fix -config arg load file error
-
fix #87 RuleImplicitConversion value type mistach check bug
-
fix #38 always true where condition check
-
abandon stdin terminal interactive mod, which may seems like hangup
## 2018-10
-
Fix SplitStatement mulitstatement eof bug #66
...
...
README.md
浏览文件 @
11f1bc33
...
...
@@ -42,4 +42,4 @@ SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写的自动化
## License
[
Apache License 2.0
](
http://github.com/XiaoMi/soar/blob/master/LICENSE
)
.
[
Apache License 2.0
](
http
s
://github.com/XiaoMi/soar/blob/master/LICENSE
)
.
README_EN.md
浏览文件 @
11f1bc33
...
...
@@ -37,4 +37,4 @@ SOAR (SQL Optimizer And Rewriter) is a tool, which can help SQL optimization and
## License
[
Apache License 2.0
](
http://github.com/XiaoMi/soar/blob/master/LICENSE
)
.
[
Apache License 2.0
](
http
s
://github.com/XiaoMi/soar/blob/master/LICENSE
)
.
cmd/soar/soar.go
浏览文件 @
11f1bc33
...
...
@@ -352,7 +352,7 @@ func main() {
explainInfo
,
err
:=
rEnv
.
Explain
(
q
.
Query
,
database
.
ExplainType
[
common
.
Config
.
ExplainType
],
database
.
ExplainFormatType
[
common
.
Config
.
ExplainFormat
])
if
err
!=
nil
{
if
err
!=
nil
&&
strings
.
HasPrefix
(
vEnv
.
Database
,
"optimizer_"
)
{
// 线上环境执行失败才到测试环境 EXPLAIN,比如在用户提供建表语句及查询语句的场景
common
.
Log
.
Warn
(
"rEnv.Explain Warn: %v"
,
err
)
explainInfo
,
err
=
vEnv
.
Explain
(
q
.
Query
,
...
...
env/env.go
浏览文件 @
11f1bc33
...
...
@@ -35,8 +35,8 @@ type VirtualEnv struct {
*
database
.
Connector
// 保存DB测试环境映射关系,防止vEnv环境冲突。
DBRef
map
[
string
]
string
hash2Db
map
[
string
]
string
DBRef
map
[
string
]
string
// db -> optimizer_xxx
hash2Db
map
[
string
]
string
// optimizer_xxx -> db
// 保存Table创建关系,防止重复创建表
TableMap
map
[
string
]
map
[
string
]
string
// 错误
...
...
vendor/vendor.json
浏览文件 @
11f1bc33
...
...
@@ -1016,68 +1016,68 @@
{
"checksumSHA1"
:
"w8FCRjH70gM6QttB9QrEh9Y1x64="
,
"path"
:
"vitess.io/vitess"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"aKn1oKcY74N8TRLm3Ayt7Q4bbI4="
,
"path"
:
"vitess.io/vitess/go/bytes2"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"JVCEN4UGRmg3TofIBdzZMZ3G0Ww="
,
"path"
:
"vitess.io/vitess/go/hack"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"e1WJ7vCnVrlQQQlc6n/FewCDMso="
,
"path"
:
"vitess.io/vitess/go/sqltypes"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"ntFIQYkBS51G6y+FEkjFW40+HOU="
,
"path"
:
"vitess.io/vitess/go/vt/log"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"XozR8bmeSR5KTe/nlUJkpJY2HKI="
,
"path"
:
"vitess.io/vitess/go/vt/proto/query"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"OnWsUHLDKcO3spwH0jD55SvKD24="
,
"path"
:
"vitess.io/vitess/go/vt/proto/topodata"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"sBAuZ/itMR8U8qbK4yLHxkP6Cpc="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtgate"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"pLWM+SPGZs3k+IhjktE/cGUlpM0="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtrpc"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"3
rucaIfitefjezWeglPndd50Mcw
="
,
"checksumSHA1"
:
"3
ggEFYVEhMPxyhkKhRGw3x1eZ9M
="
,
"path"
:
"vitess.io/vitess/go/vt/sqlparser"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
},
{
"checksumSHA1"
:
"oF4XzuOzwvj1iduX/lYqNSyY/HM="
,
"path"
:
"vitess.io/vitess/go/vt/vterrors"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-11-0
5T03:16:12
Z"
"revision"
:
"
b06f7c89ac5f0c632d9bc9621c70b014d91b27f9
"
,
"revisionTime"
:
"2018-11-0
9T17:11:46
Z"
}
],
"rootPath"
:
"github.com/XiaoMi/soar"
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
浏览文件 @
11f1bc33
...
...
@@ -2998,20 +2998,30 @@ func (node *ValuesFuncExpr) replace(from, to Expr) bool {
}
// SubstrExpr represents a call to SubstrExpr(column, value_expression) or SubstrExpr(column, value_expression,value_expression)
// also supported syntax SubstrExpr(column from value_expression for value_expression)
// also supported syntax SubstrExpr(column from value_expression for value_expression).
// Additionally to column names, SubstrExpr is also supported for string values, e.g.:
// SubstrExpr('static string value', value_expression, value_expression)
// In this case StrVal will be set instead of Name.
type
SubstrExpr
struct
{
Name
*
ColName
From
Expr
To
Expr
Name
*
ColName
StrVal
*
SQLVal
From
Expr
To
Expr
}
// Format formats the node.
func
(
node
*
SubstrExpr
)
Format
(
buf
*
TrackedBuffer
)
{
var
val
interface
{}
if
node
.
Name
!=
nil
{
val
=
node
.
Name
}
else
{
val
=
node
.
StrVal
}
if
node
.
To
==
nil
{
buf
.
Myprintf
(
"substr(%v, %v)"
,
node
.
Name
,
node
.
From
)
buf
.
Myprintf
(
"substr(%v, %v)"
,
val
,
node
.
From
)
}
else
{
buf
.
Myprintf
(
"substr(%v, %v, %v)"
,
node
.
Name
,
node
.
From
,
node
.
To
)
buf
.
Myprintf
(
"substr(%v, %v, %v)"
,
val
,
node
.
From
,
node
.
To
)
}
}
...
...
@@ -3020,7 +3030,7 @@ func (node *SubstrExpr) replace(from, to Expr) bool {
}
func
(
node
*
SubstrExpr
)
walkSubtree
(
visit
Visit
)
error
{
if
node
==
nil
{
if
node
==
nil
||
node
.
Name
==
nil
{
return
nil
}
return
Walk
(
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
浏览文件 @
11f1bc33
此差异已折叠。
点击以展开。
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
浏览文件 @
11f1bc33
...
...
@@ -2464,6 +2464,30 @@ function_call_keyword:
{
$$ = &SubstrExpr{Name: $3, From: $5, To: $7}
}
| SUBSTR openb STRING '
,
' value_expression closeb
{
$$ = &SubstrExpr{StrVal: NewStrVal($3), From: $5, To: nil}
}
| SUBSTR openb STRING '
,
' value_expression '
,
' value_expression closeb
{
$$ = &SubstrExpr{StrVal: NewStrVal($3), From: $5, To: $7}
}
| SUBSTR openb STRING FROM value_expression FOR value_expression closeb
{
$$ = &SubstrExpr{StrVal: NewStrVal($3), From: $5, To: $7}
}
| SUBSTRING openb STRING '
,
' value_expression closeb
{
$$ = &SubstrExpr{StrVal: NewStrVal($3), From: $5, To: nil}
}
| SUBSTRING openb STRING '
,
' value_expression '
,
' value_expression closeb
{
$$ = &SubstrExpr{StrVal: NewStrVal($3), From: $5, To: $7}
}
| SUBSTRING openb STRING FROM value_expression FOR value_expression closeb
{
$$ = &SubstrExpr{StrVal: NewStrVal($3), From: $5, To: $7}
}
| MATCH openb select_expression_list closeb AGAINST openb value_expression match_option closeb
{
$$ = &MatchExpr{Columns: $3, Expr: $7, Option: $8}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录