From 79e61cd98551ecfbae15e8e7ad16b87a77683818 Mon Sep 17 00:00:00 2001 From: Morgan Tocker Date: Wed, 24 Jul 2024 07:34:50 -0600 Subject: [PATCH] fix failed to extract PK error --- pkg/migration/cutover_test.go | 20 ++++++++++++++++++-- pkg/migration/migration_test.go | 2 +- pkg/repl/client.go | 3 ++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pkg/migration/cutover_test.go b/pkg/migration/cutover_test.go index e7f9095..1de90d9 100644 --- a/pkg/migration/cutover_test.go +++ b/pkg/migration/cutover_test.go @@ -40,6 +40,7 @@ func TestCutOver(t *testing.T) { assert.Equal(t, 0, db.Stats().InUse) // no connections in use. t1 := table.NewTableInfo(db, "test", "cutovert1") + assert.NoError(t, t1.SetInfo(context.Background())) // required to extract PK. t1new := table.NewTableInfo(db, "test", "_cutovert1_new") t1old := "_cutovert1_old" logger := logrus.New() @@ -100,6 +101,7 @@ func TestMDLLockFails(t *testing.T) { assert.NoError(t, err) t1 := table.NewTableInfo(db, "test", "mdllocks") + assert.NoError(t, t1.SetInfo(context.Background())) // required to extract PK. t1new := table.NewTableInfo(db, "test", "_mdllocks_new") t1old := "test_old" logger := logrus.New() @@ -136,11 +138,25 @@ func TestInvalidOptions(t *testing.T) { assert.NoError(t, err) logger := logrus.New() + testutils.RunSQL(t, `DROP TABLE IF EXISTS invalid_t1, _invalid_t1_new`) + tbl := `CREATE TABLE invalid_t1 ( + id int(11) NOT NULL AUTO_INCREMENT, + name varchar(255) NOT NULL, + PRIMARY KEY (id) + )` + testutils.RunSQL(t, tbl) + tbl = `CREATE TABLE _invalid_t1_new ( + id int(11) NOT NULL AUTO_INCREMENT, + name varchar(255) NOT NULL, + PRIMARY KEY (id) + )` + testutils.RunSQL(t, tbl) // Invalid options _, err = NewCutOver(db, nil, nil, "", nil, dbconn.NewDBConfig(), logger) assert.Error(t, err) - t1 := table.NewTableInfo(db, "test", "t1") - t1new := table.NewTableInfo(db, "test", "t1_new") + t1 := table.NewTableInfo(db, "test", "invalid_t1") + assert.NoError(t, t1.SetInfo(context.Background())) // required to extract PK. + t1new := table.NewTableInfo(db, "test", "_invalid_t1_new") t1old := "test_old" cfg, err := mysql.ParseDSN(testutils.DSN()) assert.NoError(t, err) diff --git a/pkg/migration/migration_test.go b/pkg/migration/migration_test.go index 400ab0a..7cb3b29 100644 --- a/pkg/migration/migration_test.go +++ b/pkg/migration/migration_test.go @@ -181,7 +181,7 @@ func TestRenameInMySQL80(t *testing.T) { migration.Database = cfg.DBName migration.Threads = 16 migration.Checksum = true - migration.Table = "t1" + migration.Table = "renamet1" migration.Alter = "CHANGE name nameNew varchar(255) not null" err = migration.Run() diff --git a/pkg/repl/client.go b/pkg/repl/client.go index 1ddb76f..fd5f411 100644 --- a/pkg/repl/client.go +++ b/pkg/repl/client.go @@ -368,7 +368,8 @@ func (c *Client) startCanal() { // but since canal is now closed we can safely return return } - c.logger.Errorf("canal has failed. error: %v", err) + + c.logger.Errorf("canal has failed. error: %v, table: %s", err, c.table.TableName) panic("canal has failed") } }