From 6351684070c278e18a71979e558cc2fbc6faa6f8 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 29 Jul 2022 14:57:18 +0200 Subject: [PATCH] Update type of 'log_data' from blob to longblob (#1050) * Update type of 'log_data' from blob to longblob * Add migration task to update log_data type --- server/model/log.go | 2 +- .../datastore/migration/006_log_data_type.go | 27 +++++++++++++++++++ server/store/datastore/migration/migration.go | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 server/store/datastore/migration/006_log_data_type.go diff --git a/server/model/log.go b/server/model/log.go index 8bf7f683a..b56dda3b6 100644 --- a/server/model/log.go +++ b/server/model/log.go @@ -17,6 +17,6 @@ package model type Logs struct { ID int64 `xorm:"pk autoincr 'log_id'"` ProcID int64 `xorm:"UNIQUE 'log_job_id'"` - Data []byte `xorm:"log_data"` + Data []byte `xorm:"LONGBLOB 'log_data'"` // TODO: add create timestamp } diff --git a/server/store/datastore/migration/006_log_data_type.go b/server/store/datastore/migration/006_log_data_type.go new file mode 100644 index 000000000..0291edae5 --- /dev/null +++ b/server/store/datastore/migration/006_log_data_type.go @@ -0,0 +1,27 @@ +package migration + +import ( + "xorm.io/xorm" + "xorm.io/xorm/schemas" +) + +var alterTableLogUpdateColumnLogDataType = task{ + name: "alter-table-logs-update-type-of-data", + fn: func(sess *xorm.Session) (err error) { + dialect := sess.Engine().Dialect().URI().DBType + + switch dialect { + case schemas.POSTGRES: + _, err = sess.Exec("ALTER TABLE logs ALTER COLUMN log_data TYPE BYTEA") + case schemas.MYSQL: + _, err = sess.Exec("ALTER TABLE logs MODIFY COLUMN log_data LONGBLOB") + case schemas.MSSQL: + _, err = sess.Exec("ALTER TABLE logs MODIFY COLUMN log_data VARBINARY") + default: + // sqlite does only know BLOB in all cases + return nil + } + + return err + }, +} diff --git a/server/store/datastore/migration/migration.go b/server/store/datastore/migration/migration.go index 7c165c433..bc5f6e814 100644 --- a/server/store/datastore/migration/migration.go +++ b/server/store/datastore/migration/migration.go @@ -33,6 +33,7 @@ var migrationTasks = []*task{ &fixPRSecretEventName, &alterTableReposDropCounter, &dropSenders, + &alterTableLogUpdateColumnLogDataType, } var allBeans = []interface{}{