Re-add template column to services table
We attempted to revert the rename of the template
to instance
column
in the services
table in
!24857 (merged) and
!24885 (merged), but for
some installations (e.g. staging), the template
column had been
dropped already because post-deploy migrations had finished.
We never actually shipped this change to production, but for these
environments we need to re-add the template
column back into the table
or project creation will fail.
Note we do not do a data migration (e.g. set the template
column to
true for rows that have a NULL project_id
) for two reasons:
- We don't want to insert a template by accident.
- This rename only finished on development/staging environments.
Note that this migration happens in a post-deploy migration to ensure
20200211152410_remove_instance_from_services.rb
gets a chance
to undo the migration first.
Migration output
!23595 (merged) did run
When migrations fromFrom the !23595 (merged):
== 20200123092602 RenameServicesTemplateToInstance: migrating =================
-- transaction_open?()
-> 0.0000s
-- columns(:services)
-> 0.0018s
-- add_column(:services, :instance, :boolean, {:limit=>nil, :precision=>nil, :scale=>nil})
-> 0.0050s
-- change_column_default(:services, :instance, "false")
-> 0.0031s
-- transaction_open?()
-> 0.0000s
-- exec_query("SELECT COUNT(*) AS count FROM \"services\"")
-> 0.0008s
-- indexes(:services)
-> 0.0025s
-- transaction_open?()
-> 0.0000s
-- index_exists?(:services, ["instance"], {:unique=>false, :name=>"index_services_on_instance", :length=>{}, :order=>{}, :using=>:btree, :algorithm=>:concurrently})
-> 0.0016s
-- execute("SET statement_timeout TO 0")
-> 0.0005s
-- add_index(:services, ["instance"], {:unique=>false, :name=>"index_services_on_instance", :length=>{}, :order=>{}, :using=>:btree, :algorithm=>:concurrently})
-> 0.0066s
-- execute("RESET ALL")
-> 0.0004s
-- foreign_keys(:services)
-> 0.0023s
-- quote_table_name(:services)
-> 0.0000s
-- quote_column_name(:template)
-> 0.0000s
-- quote_column_name(:instance)
-> 0.0000s
-- execute("CREATE OR REPLACE FUNCTION trigger_27489c1cdc22()\nRETURNS trigger AS\n$BODY$\nBEGIN\n NEW.\"instance\" := NEW.\"template\";\n RETURN NEW;\nEND;\n$BODY$\nLANGUAGE 'plpgsql'\nVOLATILE\n")
-> 0.0025s
-- execute("DROP TRIGGER IF EXISTS trigger_27489c1cdc22\nON \"services\"\n")
NOTICE: trigger "trigger_27489c1cdc22" for relation "services" does not exist, skipping
-> 0.0005s
-- execute("CREATE TRIGGER trigger_27489c1cdc22\nBEFORE INSERT OR UPDATE\nON \"services\"\nFOR EACH ROW\nEXECUTE PROCEDURE trigger_27489c1cdc22()\n")
-> 0.0018s
== 20200123092602 RenameServicesTemplateToInstance: migrated (0.0319s) ========
== 20200123101859 CleanupRenameServicesTemplateToInstance: migrating ==========
-- execute("DROP TRIGGER IF EXISTS trigger_27489c1cdc22 ON services")
-> 0.0023s
-- execute("DROP FUNCTION IF EXISTS trigger_27489c1cdc22()")
-> 0.0020s
-- remove_column(:services, :template)
-> 0.0030s
== 20200123101859 CleanupRenameServicesTemplateToInstance: migrated (0.0086s) =
This MR:
== 20200212052620 ReaddTemplateColumnToServices: migrating ====================
-- column_exists?(:services, :template)
-> 0.0021s
-- transaction_open?()
-> 0.0000s
-- execute("SET statement_timeout TO 0")
-> 0.0006s
-- transaction()
-- add_column(:services, :template, :boolean, {:default=>nil})
-> 0.0019s
-- change_column_default(:services, :template, false)
-> 0.0031s
-> 0.0075s
-- columns(:services)
-> 0.0021s
-- transaction_open?()
-> 0.0000s
-- exec_query("SELECT COUNT(*) AS count FROM \"services\"")
-> 0.0012s
-- execute("RESET ALL")
-> 0.0007s
== 20200212052620 ReaddTemplateColumnToServices: migrated (0.0149s) ===========
!23595 (merged) did run (not post-deploy)
When only normal migation fromFrom !23595 (merged):
== 20200123092602 RenameServicesTemplateToInstance: migrating =================
-- transaction_open?()
-> 0.0000s
-- columns(:services)
-> 0.0017s
-- add_column(:services, :instance, :boolean, {:limit=>nil, :precision=>nil, :scale=>nil})
-> 0.0051s
-- change_column_default(:services, :instance, "false")
-> 0.0031s
-- transaction_open?()
-> 0.0000s
-- exec_query("SELECT COUNT(*) AS count FROM \"services\"")
-> 0.0009s
-- indexes(:services)
-> 0.0025s
-- transaction_open?()
-> 0.0000s
-- index_exists?(:services, ["instance"], {:unique=>false, :name=>"index_services_on_instance", :length=>{}, :order=>{}, :using=>:btree, :algorithm=>:concurrently})
-> 0.0017s
-- execute("SET statement_timeout TO 0")
-> 0.0005s
-- add_index(:services, ["instance"], {:unique=>false, :name=>"index_services_on_instance", :length=>{}, :order=>{}, :using=>:btree, :algorithm=>:concurrently})
-> 0.0088s
-- execute("RESET ALL")
-> 0.0017s
-- foreign_keys(:services)
-> 0.0086s
-- quote_table_name(:services)
-> 0.0000s
-- quote_column_name(:template)
-> 0.0000s
-- quote_column_name(:instance)
-> 0.0000s
-- execute("CREATE OR REPLACE FUNCTION trigger_27489c1cdc22()\nRETURNS trigger AS\n$BODY$\nBEGIN\n NEW.\"instance\" := NEW.\"template\";\n RETURN NEW;\nEND;\n$BODY$\nLANGUAGE 'plpgsql'\nVOLATILE\n")
-> 0.0070s
-- execute("DROP TRIGGER IF EXISTS trigger_27489c1cdc22\nON \"services\"\n")
NOTICE: trigger "trigger_27489c1cdc22" for relation "services" does not exist, skipping
-> 0.0025s
-- execute("CREATE TRIGGER trigger_27489c1cdc22\nBEFORE INSERT OR UPDATE\nON \"services\"\nFOR EACH ROW\nEXECUTE PROCEDURE trigger_27489c1cdc22()\n")
-> 0.0043s
== 20200123092602 RenameServicesTemplateToInstance: migrated (0.0516s) ========
This MR:
== 20200212052620 ReaddTemplateColumnToServices: migrating ====================
-- column_exists?(:services, :template)
-> 0.0051s
== 20200212052620 ReaddTemplateColumnToServices: migrated (0.0053s) ===========
!23595 (merged) did run
When no migrations fromThis MR:
== 20200212052620 ReaddTemplateColumnToServices: migrating ====================
-- column_exists?(:services, :template)
-> 0.0018s
== 20200212052620 ReaddTemplateColumnToServices: migrated (0.0018s) ===========