Skip to content

Remove ignored column from in_product_marketing_emails

Serhii Yarynovskyi requested to merge 426381-drop-ignored-campaign-column into master

What does this MR do and why?

Remove constraint, index and campaign column from in_product_marketing_emails table

Column marked as ignored - !131787 (diffs)

Database changes

This is basically reverts original implementation DB changes - Experiment: "Build iOS app guide" email campaign (!83817 - merged)

  1. Remove campaign (text) column from in_product_marketing_emails.
  2. Remove unique multicolumn index on user_id and campaign.
  3. Remove check constraint to ensure that track and series are NOT NULL when campaign IS NULL OR track and series are NULL when campaign IS NOT NULL.

Migrations

Migrate
== 20231101130230 RemoveInProductMarketingEmailsCampaignColumn: migrating =====
-- change_column_null(:in_product_marketing_emails, :track, false)
   -> 0.0044s
-- change_column_null(:in_product_marketing_emails, :series, false)
   -> 0.0025s
-- transaction_open?(nil)
   -> 0.0000s
-- transaction_open?(nil)
   -> 0.0000s
-- execute("            ALTER TABLE in_product_marketing_emails\n            DROP CONSTRAINT IF EXISTS in_product_marketing_emails_track_and_series_or_campaign\n")
   -> 0.0024s
-- transaction_open?(nil)
   -> 0.0002s
-- view_exists?(:postgres_partitions)
   -> 0.3947s
-- indexes(:in_product_marketing_emails)
   -> 0.0126s
-- execute("SET statement_timeout TO 0")
   -> 0.0008s
-- remove_index(:in_product_marketing_emails, {:algorithm=>:concurrently, :name=>:index_in_product_marketing_emails_on_user_campaign})
   -> 0.0059s
-- execute("RESET statement_timeout")
   -> 0.0012s
-- transaction_open?(nil)
   -> 0.0000s
-- remove_column(:in_product_marketing_emails, :campaign, {:if_exists=>true})
   -> 0.0056s
== 20231101130230 RemoveInProductMarketingEmailsCampaignColumn: migrated (0.5361s) 
Rollback
== 20231101130230 RemoveInProductMarketingEmailsCampaignColumn: reverting =====
-- change_column_null(:in_product_marketing_emails, :track, true)
   -> 0.0040s
-- change_column_null(:in_product_marketing_emails, :series, true)
   -> 0.0014s
-- transaction_open?(nil)
   -> 0.0000s
-- add_column(:in_product_marketing_emails, :campaign, :text, {:if_not_exists=>true})
   -> 0.2067s
-- transaction_open?(nil)
   -> 0.0000s
-- transaction_open?(nil)
   -> 0.0000s
-- execute("ALTER TABLE in_product_marketing_emails\nADD CONSTRAINT check_9d8b29f74f\nCHECK ( char_length(campaign) <= 255 )\nNOT VALID;\n")
   -> 0.0025s
-- execute("SET statement_timeout TO 0")
   -> 0.0007s
-- execute("ALTER TABLE in_product_marketing_emails VALIDATE CONSTRAINT check_9d8b29f74f;")
   -> 0.0019s
-- execute("RESET statement_timeout")
   -> 0.0011s
-- transaction_open?(nil)
   -> 0.0000s
-- view_exists?(:postgres_partitions)
   -> 0.0021s
-- index_exists?(:in_product_marketing_emails, [:user_id, :campaign], {:unique=>true, :name=>:index_in_product_marketing_emails_on_user_campaign, :algorithm=>:concurrently})
   -> 0.0109s
-- add_index(:in_product_marketing_emails, [:user_id, :campaign], {:unique=>true, :name=>:index_in_product_marketing_emails_on_user_campaign, :algorithm=>:concurrently})
   -> 0.0049s
-- transaction_open?(nil)
   -> 0.0000s
-- transaction_open?(nil)
   -> 0.0000s
-- execute("ALTER TABLE in_product_marketing_emails\nADD CONSTRAINT in_product_marketing_emails_track_and_series_or_campaign\nCHECK ( (track IS NOT NULL AND series IS NOT NULL AND campaign IS NULL) OR (track IS NULL AND series IS NULL AND campaign IS NOT NULL) )\nNOT VALID;\n")
   -> 0.0013s
-- execute("ALTER TABLE in_product_marketing_emails VALIDATE CONSTRAINT in_product_marketing_emails_track_and_series_or_campaign;")
   -> 0.0015s
== 20231101130230 RemoveInProductMarketingEmailsCampaignColumn: reverted (0.3494s) 

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #426381 (closed)

Edited by Serhii Yarynovskyi

Merge request reports