提交 06727ba7 编写于 作者: martianzhang's avatar martianzhang

fix #205 create index rewrite error

  https://github.com/XiaoMi/soar/issues/205
上级 a2ac8f14
...@@ -1688,7 +1688,6 @@ func MergeAlterTables(sqls ...string) map[string]string { ...@@ -1688,7 +1688,6 @@ func MergeAlterTables(sqls ...string) map[string]string {
// CREATE [UNIQUE|FULLTEXT|SPATIAL|PRIMARY] [KEY|INDEX] idx_name ON tbl_name // CREATE [UNIQUE|FULLTEXT|SPATIAL|PRIMARY] [KEY|INDEX] idx_name ON tbl_name
createIndexExp := regexp.MustCompile(`(?i)create((unique)|(fulltext)|(spatial)|(primary)|(\s*)\s*)((index)|(key))\s*`) createIndexExp := regexp.MustCompile(`(?i)create((unique)|(fulltext)|(spatial)|(primary)|(\s*)\s*)((index)|(key))\s*`)
indexNameExp := regexp.MustCompile(`(?i)(` + backTicks + `|([^\s]*))\s*`) indexNameExp := regexp.MustCompile(`(?i)(` + backTicks + `|([^\s]*))\s*`)
indexColsExp := regexp.MustCompile(`(?i)(` + backTicks + `|([^\s]*))\s*on\s*(` + backTicks + `|([^\s]*))\s*`)
for _, sql := range sqls { for _, sql := range sqls {
sql = strings.Trim(sql, common.Config.Delimiter) sql = strings.Trim(sql, common.Config.Delimiter)
...@@ -1719,7 +1718,8 @@ func MergeAlterTables(sqls ...string) map[string]string { ...@@ -1719,7 +1718,8 @@ func MergeAlterTables(sqls ...string) map[string]string {
} else if createIndexExp.MatchString(sql) { } else if createIndexExp.MatchString(sql) {
buf := createIndexExp.ReplaceAllString(sql, "") buf := createIndexExp.ReplaceAllString(sql, "")
idxName := strings.TrimSpace(indexNameExp.FindString(buf)) idxName := strings.TrimSpace(indexNameExp.FindString(buf))
buf = indexColsExp.ReplaceAllString(buf, "") buf = string([]byte(buf)[strings.Index(buf, "("):])
common.Log.Error(buf)
common.Log.Debug("alter createIndexExp: ALTER %v ADD INDEX %v %v", tableName, "ADD INDEX", idxName, buf) common.Log.Debug("alter createIndexExp: ALTER %v ADD INDEX %v %v", tableName, "ADD INDEX", idxName, buf)
alterSQL = fmt.Sprint("ADD INDEX", " "+idxName+" ", buf) alterSQL = fmt.Sprint("ADD INDEX", " "+idxName+" ", buf)
} }
......
...@@ -631,6 +631,7 @@ func TestMergeAlterTables(t *testing.T) { ...@@ -631,6 +631,7 @@ func TestMergeAlterTables(t *testing.T) {
// ADD|DROP INDEX // ADD|DROP INDEX
// TODO: PRIMARY KEY, [UNIQUE|FULLTEXT|SPATIAL] INDEX // TODO: PRIMARY KEY, [UNIQUE|FULLTEXT|SPATIAL] INDEX
"CREATE INDEX part_of_name ON customer (name(10));", "CREATE INDEX part_of_name ON customer (name(10));",
"create index idx_test_cca on test_bb(test_cc);", // https://github.com/XiaoMi/soar/issues/205
"alter table `sakila`.`t1` add index `idx_col`(`col`)", "alter table `sakila`.`t1` add index `idx_col`(`col`)",
"alter table `sakila`.`t1` add UNIQUE index `idx_col`(`col`)", "alter table `sakila`.`t1` add UNIQUE index `idx_col`(`col`)",
"alter table `sakila`.`t1` add index `idx_ID`(`ID`)", "alter table `sakila`.`t1` add index `idx_ID`(`ID`)",
......
...@@ -8,3 +8,5 @@ ...@@ -8,3 +8,5 @@
`t3` : ALTER TABLE `t3` add index `idx_a`(a), drop index`idx_b`(b) ; `t3` : ALTER TABLE `t3` add index `idx_a`(a), drop index`idx_b`(b) ;
`test_bb` : ALTER TABLE `test_bb` ADD INDEX idx_test_cca (test_cc) ;
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册