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