Skip to content

Commit bca0b84

Browse files
authored
Merge pull request #527 from RobinGeuze/fixMySQL8Index
Fix fetchIndexesViaSqlDB/NewTableFromSqlDB for MySQL 8.0
2 parents 0bb0b8d + 4eb89d9 commit bca0b84

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

schema/schema.go

+20-17
Original file line numberDiff line numberDiff line change
@@ -339,28 +339,31 @@ func (ta *Table) fetchIndexesViaSqlDB(conn *sql.DB) error {
339339
currentName := ""
340340

341341
var unusedVal interface{}
342-
unused := &unusedVal
343342

344343
for r.Next() {
345344
var indexName, colName string
346345
var noneUnique uint64
347346
var cardinality interface{}
348-
349-
err := r.Scan(
350-
&unused,
351-
&noneUnique,
352-
&indexName,
353-
&unused,
354-
&colName,
355-
&unused,
356-
&cardinality,
357-
&unused,
358-
&unused,
359-
&unused,
360-
&unused,
361-
&unused,
362-
&unused,
363-
)
347+
cols, err := r.Columns()
348+
if err != nil {
349+
return errors.Trace(err)
350+
}
351+
values := make([]interface{}, len(cols))
352+
for i := 0; i < len(cols); i++ {
353+
switch i {
354+
case 1:
355+
values[i] = &noneUnique
356+
case 2:
357+
values[i] = &indexName
358+
case 4:
359+
values[i] = &colName
360+
case 6:
361+
values[i] = &cardinality
362+
default:
363+
values[i] = &unusedVal
364+
}
365+
}
366+
err = r.Scan(values...)
364367
if err != nil {
365368
return errors.Trace(err)
366369
}

schema/schema_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ import (
66
"fmt"
77
"testing"
88

9+
. "github.com/pingcap/check"
10+
911
"github.com/go-mysql-org/go-mysql/client"
1012
_ "github.com/go-mysql-org/go-mysql/driver"
11-
. "github.com/pingcap/check"
1213
)
1314

1415
// use docker mysql for test

0 commit comments

Comments
 (0)