From f3588d6e8b603ca59c8e659569a35602330bfbdf Mon Sep 17 00:00:00 2001 From: xiyangxixian <2554758802@qq.com> Date: Thu, 29 Nov 2018 14:17:16 +0800 Subject: [PATCH] fix index advisor give wrong database name, `optimizer_xx` is temporary database --- cmd/soar/soar.go | 2 +- env/env.go | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cmd/soar/soar.go b/cmd/soar/soar.go index 500a40e..5332df5 100644 --- a/cmd/soar/soar.go +++ b/cmd/soar/soar.go @@ -278,7 +278,7 @@ func main() { explainInfo, err := rEnv.Explain(q.Query, database.ExplainType[common.Config.ExplainType], database.ExplainFormatType[common.Config.ExplainFormat]) - if err != nil && strings.HasPrefix(vEnv.Database, "optimizer_") { + if err != nil { // 线上环境执行失败才到测试环境 EXPLAIN,比如在用户提供建表语句及查询语句的场景 common.Log.Warn("rEnv.Explain Warn: %v", err) explainInfo, err = vEnv.Explain(q.Query, diff --git a/env/env.go b/env/env.go index 9b3f6ea..cbffde9 100644 --- a/env/env.go +++ b/env/env.go @@ -122,6 +122,7 @@ func (ve VirtualEnv) RealDB(hash string) string { if _, ok := ve.hash2Db[hash]; ok { return ve.hash2Db[hash] } + common.Log.Error("RealDB, missing hash map: %s", hash) return hash } @@ -355,7 +356,9 @@ func (ve VirtualEnv) createDatabase(rEnv database.Connector, dbName string) erro } // optimizer_YYMMDDHHmmss_xxxx - dbHash := fmt.Sprintf("optimizer_%s_%s", time.Now().Format("060102150405"), uniuri.New()) + dbHash := fmt.Sprintf("optimizer_%s_%s", // Total 39 bytes + time.Now().Format("060102150405"), // 12 Bytes 20180102030405 + strings.ToLower(uniuri.New())) // 16 Bytes random string common.Log.Debug("createDatabase, mapping `%s` :`%s`-->`%s`", dbName, dbName, dbHash) ddl, err := rEnv.ShowCreateDatabase(dbName) if err != nil { -- GitLab