Skip to content

Fix state_id migration failing when value is null

Stan Hu requested to merge sh-fix-state-id-migration into master

change_column_default doesn't set actually default value, so if the value is nil the change_column_null migration will fail. To fix this, we add a default value to change_column_null.

Closes #35147 (closed)

Sample output:

== 20191008200204 AddStateIdDefaultValue: migrating ===========================
-- change_column_default(:issues, :state_id, 1)
   -> 0.0034s
-- transaction_open?()
   -> 0.0000s
-- exec_query("SELECT COUNT(*) AS count FROM \"issues\" WHERE \"issues\".\"state_id\" IS NULL")
   -> 0.0020s
-- exec_query("SELECT  \"issues\".\"id\" FROM \"issues\" WHERE \"issues\".\"state_id\" IS NULL ORDER BY \"issues\".\"id\" ASC LIMIT 1")
   -> 0.0008s
-- exec_query("SELECT  \"issues\".\"id\" FROM \"issues\" WHERE \"issues\".\"id\" >= 375 AND \"issues\".\"state_id\" IS NULL ORDER BY \"issues\".\"id\" ASC LIMIT 1 OFFSET 1")
   -> 0.0005s
-- execute("UPDATE \"issues\" SET \"state_id\" = 1 WHERE \"issues\".\"id\" >= 375 AND \"issues\".\"state_id\" IS NULL")
   -> 0.0018s
-- change_column_null(:issues, :state_id, false)
   -> 0.0008s
-- change_column_default(:merge_requests, :state_id, 1)
   -> 0.0026s
-- transaction_open?()
   -> 0.0000s
-- exec_query("SELECT COUNT(*) AS count FROM \"merge_requests\" WHERE \"merge_requests\".\"state_id\" IS NULL")
   -> 0.0016s
-- change_column_null(:merge_requests, :state_id, false)
   -> 0.0008s
== 20191008200204 AddStateIdDefaultValue: migrated (0.0155s) ==================
Edited by Stan Hu

Merge request reports