From e6aba8caaafa32b30740cd481f1fb828d7810a68 Mon Sep 17 00:00:00 2001 From: Juan Fernandez Date: Mon, 22 Aug 2022 13:01:18 -0400 Subject: [PATCH] Bug with Vendor Width migration (#7339) Updated migration used to increate the width of 'software.vendor' to address issue found when running migration in aurora: "ALGORITHM=INPLACE is not supported. Reason: cannot silently convert NULL values, as required in this SQL_MODE. Try ALGORITHM=COPY." --- ...0220818101352_ChangeSoftwareVendorWidth.go | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/server/datastore/mysql/migrations/tables/20220818101352_ChangeSoftwareVendorWidth.go b/server/datastore/mysql/migrations/tables/20220818101352_ChangeSoftwareVendorWidth.go index 3addf47b7b..8fc684ccd7 100644 --- a/server/datastore/mysql/migrations/tables/20220818101352_ChangeSoftwareVendorWidth.go +++ b/server/datastore/mysql/migrations/tables/20220818101352_ChangeSoftwareVendorWidth.go @@ -17,7 +17,7 @@ func Up_20220818101352(tx *sql.Tx) error { // Add temp column. //----------------- if _, err := tx.Exec( - `ALTER TABLE software ADD COLUMN vendor_wide varchar(114) NULL, ALGORITHM=INPLACE, LOCK=NONE`); err != nil { + `ALTER TABLE software ADD COLUMN vendor_wide varchar(114) DEFAULT '' NOT NULL, ALGORITHM=INPLACE, LOCK=NONE`); err != nil { return errors.Wrapf(err, "creating temp column for vendor") } @@ -30,21 +30,12 @@ func Up_20220818101352(tx *sql.Tx) error { } //------------------ - // Update in batches + // Perform update //------------------ - const updateStmt = `UPDATE software SET vendor_wide = vendor WHERE vendor_wide IS NULL LIMIT 500` - for { - res, err := tx.Exec(updateStmt) - if err != nil { - return errors.Wrapf(err, "updating temp vendor column") - } - affected, err := res.RowsAffected() - if err != nil { - return errors.Wrapf(err, "updating temp vendor column") - } - if affected == 0 { - break - } + const updateStmt = `UPDATE software SET vendor_wide = vendor WHERE vendor <> ''` + _, err := tx.Exec(updateStmt) + if err != nil { + return errors.Wrapf(err, "updating temp vendor column") } //---------------- @@ -58,15 +49,15 @@ func Up_20220818101352(tx *sql.Tx) error { // Rename old column //------------------ if _, err := tx.Exec(`ALTER TABLE software CHANGE vendor vendor_old varchar(32) DEFAULT '' NOT NULL, ALGORITHM=INPLACE, LOCK=NONE`); err != nil { - return errors.Wrapf(err, "dropping old column") + return errors.Wrapf(err, "renaming old column") } // --------------- - // Rename column + // Rename new column // --------------- if _, err := tx.Exec( `ALTER TABLE software CHANGE vendor_wide vendor varchar(114) DEFAULT '' NOT NULL, ALGORITHM=INPLACE, LOCK=NONE`); err != nil { - return errors.Wrapf(err, "dropping old column") + return errors.Wrapf(err, "renaming new column") } logger.Info.Println("Done increasing width of software.vendor...")