diff --git a/schema/schema.go b/schema/schema.go index 68448f6e3..20039a209 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -56,6 +56,7 @@ type Index struct { Name string Columns []string Cardinality []uint64 + NoneUnique uint64 } type Table struct { @@ -190,7 +191,7 @@ func (ta *Table) AddIndex(name string) (index *Index) { } func NewIndex(name string) *Index { - return &Index{name, make([]string, 0, 8), make([]uint64, 0, 8)} + return &Index{name, make([]string, 0, 8), make([]uint64, 0, 8), 0} } func (idx *Index) AddColumn(name string, cardinality uint64) { @@ -317,6 +318,7 @@ func (ta *Table) fetchIndexes(conn mysql.Executer) error { cardinality, _ := r.GetUint(i, 6) colName, _ := r.GetString(i, 4) currentIndex.AddColumn(colName, cardinality) + currentIndex.NoneUnique, _ = r.GetUint(i, 1) } return ta.fetchPrimaryKeyColumns() @@ -338,11 +340,12 @@ func (ta *Table) fetchIndexesViaSqlDB(conn *sql.DB) error { for r.Next() { var indexName, colName string + var noneUnique uint64 var cardinality interface{} err := r.Scan( &unused, - &unused, + &noneUnique, &indexName, &unused, &colName, @@ -366,6 +369,7 @@ func (ta *Table) fetchIndexesViaSqlDB(conn *sql.DB) error { c := toUint64(cardinality) currentIndex.AddColumn(colName, c) + currentIndex.NoneUnique = noneUnique } return ta.fetchPrimaryKeyColumns()