提交 318bd5b4 编写于 作者: martianzhang's avatar martianzhang

fix #66 🐛

  1. SplitStatement mulitstatement eof bug
  2. empty query by pass
上级 1b663e78
...@@ -944,6 +944,14 @@ func SplitStatement(buf []byte, delimiter []byte) (string, []byte) { ...@@ -944,6 +944,14 @@ func SplitStatement(buf []byte, delimiter []byte) (string, []byte) {
if multiLineComment && !quoted && !singleLineComment { if multiLineComment && !quoted && !singleLineComment {
i = i + 2 i = i + 2
multiLineComment = false multiLineComment = false
// '/*comment*/'
if i == len(buf) {
sql = string(buf[:i])
}
// '/*comment*/;', 'select 1/*comment*/;'
if string(buf[i:]) == string(delimiter) {
sql = string(buf)
}
continue continue
} }
} }
......
...@@ -100,6 +100,12 @@ func TestSplitStatement(t *testing.T) { ...@@ -100,6 +100,12 @@ func TestSplitStatement(t *testing.T) {
;*/ ;*/
from test;hello`), from test;hello`),
[]byte(`select * from test`), []byte(`select * from test`),
// https://github.com/XiaoMi/soar/issues/66
[]byte(`/*comment*/`),
[]byte(`/*comment*/;`),
[]byte(`--`),
[]byte(`-- comment`),
[]byte(`# comment`),
} }
for _, buf := range bufs { for _, buf := range bufs {
fmt.Println(SplitStatement(buf, []byte(common.Config.Delimiter))) fmt.Println(SplitStatement(buf, []byte(common.Config.Delimiter)))
......
...@@ -153,6 +153,7 @@ func main() { ...@@ -153,6 +153,7 @@ func main() {
mysqlSuggest := make(map[string]advisor.Rule) // MySQL返回的ERROR信息 mysqlSuggest := make(map[string]advisor.Rule) // MySQL返回的ERROR信息
if buf == "" { if buf == "" {
common.Log.Debug("buf: %s, sql: %s empty", buf, sql)
break break
} }
// 查询请求切分 // 查询请求切分
...@@ -167,7 +168,10 @@ func main() { ...@@ -167,7 +168,10 @@ func main() {
// 去除无用的备注和空格 // 去除无用的备注和空格
sql = strings.TrimSpace(sql) sql = strings.TrimSpace(sql)
sql = string(database.RemoveSQLComments([]byte(sql))) sql = string(database.RemoveSQLComments([]byte(sql)))
if sql == "" {
common.Log.Debug("empty query or comment, buf: %s", buf)
continue
}
common.Log.Debug("main loop SQL: %s", sql) common.Log.Debug("main loop SQL: %s", sql)
// +++++++++++++++++++++小工具集[开始]+++++++++++++++++++++++{ // +++++++++++++++++++++小工具集[开始]+++++++++++++++++++++++{
......
...@@ -1016,68 +1016,68 @@ ...@@ -1016,68 +1016,68 @@
{ {
"checksumSHA1": "w8FCRjH70gM6QttB9QrEh9Y1x64=", "checksumSHA1": "w8FCRjH70gM6QttB9QrEh9Y1x64=",
"path": "vitess.io/vitess", "path": "vitess.io/vitess",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=", "checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=",
"path": "vitess.io/vitess/go/bytes2", "path": "vitess.io/vitess/go/bytes2",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "JVCEN4UGRmg3TofIBdzZMZ3G0Ww=", "checksumSHA1": "JVCEN4UGRmg3TofIBdzZMZ3G0Ww=",
"path": "vitess.io/vitess/go/hack", "path": "vitess.io/vitess/go/hack",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "e1WJ7vCnVrlQQQlc6n/FewCDMso=", "checksumSHA1": "e1WJ7vCnVrlQQQlc6n/FewCDMso=",
"path": "vitess.io/vitess/go/sqltypes", "path": "vitess.io/vitess/go/sqltypes",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "ntFIQYkBS51G6y+FEkjFW40+HOU=", "checksumSHA1": "ntFIQYkBS51G6y+FEkjFW40+HOU=",
"path": "vitess.io/vitess/go/vt/log", "path": "vitess.io/vitess/go/vt/log",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "XozR8bmeSR5KTe/nlUJkpJY2HKI=", "checksumSHA1": "XozR8bmeSR5KTe/nlUJkpJY2HKI=",
"path": "vitess.io/vitess/go/vt/proto/query", "path": "vitess.io/vitess/go/vt/proto/query",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "OnWsUHLDKcO3spwH0jD55SvKD24=", "checksumSHA1": "OnWsUHLDKcO3spwH0jD55SvKD24=",
"path": "vitess.io/vitess/go/vt/proto/topodata", "path": "vitess.io/vitess/go/vt/proto/topodata",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "sBAuZ/itMR8U8qbK4yLHxkP6Cpc=", "checksumSHA1": "sBAuZ/itMR8U8qbK4yLHxkP6Cpc=",
"path": "vitess.io/vitess/go/vt/proto/vtgate", "path": "vitess.io/vitess/go/vt/proto/vtgate",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "pLWM+SPGZs3k+IhjktE/cGUlpM0=", "checksumSHA1": "pLWM+SPGZs3k+IhjktE/cGUlpM0=",
"path": "vitess.io/vitess/go/vt/proto/vtrpc", "path": "vitess.io/vitess/go/vt/proto/vtrpc",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "re3V8oX+ujxHbNZuB+QEtrcXxE8=", "checksumSHA1": "re3V8oX+ujxHbNZuB+QEtrcXxE8=",
"path": "vitess.io/vitess/go/vt/sqlparser", "path": "vitess.io/vitess/go/vt/sqlparser",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
}, },
{ {
"checksumSHA1": "oF4XzuOzwvj1iduX/lYqNSyY/HM=", "checksumSHA1": "oF4XzuOzwvj1iduX/lYqNSyY/HM=",
"path": "vitess.io/vitess/go/vt/vterrors", "path": "vitess.io/vitess/go/vt/vterrors",
"revision": "ee89e01fd0f1e8d97911a845a1828cc1ca614c9e", "revision": "3db5b2f0eb75f490c755bf20d35fd3afdacdd920",
"revisionTime": "2018-10-29T23:21:17Z" "revisionTime": "2018-10-30T14:25:51Z"
} }
], ],
"rootPath": "github.com/XiaoMi/soar" "rootPath": "github.com/XiaoMi/soar"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册