From 26dd15e8ec430e87012f2db368c4e14dd2503c73 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 5 Aug 2021 21:44:46 +0800 Subject: [PATCH] Fix bug --- dialects/dameng.go | 17 +++++++++++++++-- engine.go | 7 +++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/dialects/dameng.go b/dialects/dameng.go index 61835f2e..4cc6ac89 100644 --- a/dialects/dameng.go +++ b/dialects/dameng.go @@ -556,6 +556,18 @@ func (db *dameng) Features() *DialectFeatures { } } +// DropIndexSQL returns a SQL to drop index +func (db *dameng) DropIndexSQL(tableName string, index *schemas.Index) string { + quote := db.dialect.Quoter().Quote + var name string + if index.IsRegular { + name = index.XName(tableName) + } else { + name = index.Name + } + return fmt.Sprintf("DROP INDEX %v", quote(name)) +} + func (db *dameng) SQLType(c *schemas.Column) string { var res string switch t := c.SQLType.Name; t { @@ -950,9 +962,10 @@ func (db *dameng) GetTables(queryer core.Queryer, ctx context.Context) ([]*schem } func (db *dameng) GetIndexes(queryer core.Queryer, ctx context.Context, tableName string) (map[string]*schemas.Index, error) { - args := []interface{}{tableName} + args := []interface{}{tableName, tableName} s := "SELECT t.column_name,i.uniqueness,i.index_name FROM user_ind_columns t,user_indexes i " + - "WHERE t.index_name = i.index_name and t.table_name = i.table_name and t.table_name =?" + "WHERE t.index_name = i.index_name and t.table_name = i.table_name and t.table_name =?" + + " AND t.index_name not in (SELECT index_name FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' AND table_name = ?)" rows, err := queryer.QueryContext(ctx, s, args...) if err != nil { diff --git a/engine.go b/engine.go index f9e17c5a..fd8c6ade 100644 --- a/engine.go +++ b/engine.go @@ -489,9 +489,12 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w } } - dstTableName := dstTable.Name + var dstTableName = dstTable.Name + var quoter = dstDialect.Quoter().Quote + var quotedDstTableName = quoter(dstTable.Name) if dstDialect.URI().Schema != "" { dstTableName = fmt.Sprintf("%s.%s", dstDialect.URI().Schema, dstTable.Name) + quotedDstTableName = fmt.Sprintf("%s.%s", quoter(dstDialect.URI().Schema), quoter(dstTable.Name)) } originalTableName := table.Name if engine.dialect.URI().Schema != "" { @@ -560,7 +563,7 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w sess := engine.NewSession() defer sess.Close() for rows.Next() { - _, err = io.WriteString(w, "INSERT INTO "+dstDialect.Quoter().Quote(dstTableName)+" ("+destColNames+") VALUES (") + _, err = io.WriteString(w, "INSERT INTO "+quotedDstTableName+" ("+destColNames+") VALUES (") if err != nil { return err }