Skip to content

Add workspace variables table and add PAT to workspaces table

Vishal Tak requested to merge vtak/private_repos_db_migrations into master

What does this MR do and why?

Issue: Rails: DB migrations and model class updates fo... (#421505 - closed)

  • Add workspace variables table
  • Add PAT to workspaces table
  • Add config version to workspaces table

Database Changes

Up migration

➜  gitlab git:(vtak/private_repos_db_migrations) ✗ bin/rails db:migrate
main: == [advisory_lock_connection] object_id: 225120, pg_backend_pid: 66037
main: == 20230821000001 CreateWorkspaceVariables: migrating =========================
main: -- create_table(:workspace_variables)
main: -- quote_column_name(:key)
main:    -> 0.0000s
main:    -> 0.0205s
main: == 20230821000001 CreateWorkspaceVariables: migrated (0.0825s) ================

main: == [advisory_lock_connection] object_id: 225120, pg_backend_pid: 66037
ci: == [advisory_lock_connection] object_id: 225420, pg_backend_pid: 66039
ci: == 20230821000001 CreateWorkspaceVariables: migrating =========================
ci: -- create_table(:workspace_variables)
ci: -- quote_column_name(:key)
ci:    -> 0.0000s
ci:    -> 0.0194s
I, [2023-08-21T09:40:12.166356 #65901]  INFO -- : Database: 'ci', Table: 'workspace_variables': Lock Writes
ci: == 20230821000001 CreateWorkspaceVariables: migrated (0.0451s) ================

ci: == [advisory_lock_connection] object_id: 225420, pg_backend_pid: 66039
main: == [advisory_lock_connection] object_id: 225600, pg_backend_pid: 66042
main: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: migrating =============
main: -- transaction_open?()
main:    -> 0.0000s
main: -- add_column(:workspaces, :personal_access_token_id, :bigint)
main:    -> 0.0014s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0010s
main: -- index_exists?(:workspaces, :personal_access_token_id, {:name=>"index_workspaces_on_personal_access_token_id", :algorithm=>:concurrently})
main:    -> 0.0055s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0002s
main: -- add_index(:workspaces, :personal_access_token_id, {:name=>"index_workspaces_on_personal_access_token_id", :algorithm=>:concurrently})
main:    -> 0.0068s
main: -- execute("RESET statement_timeout")
main:    -> 0.0002s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- execute("ALTER TABLE workspaces ADD CONSTRAINT fk_ec70695b2c FOREIGN KEY (personal_access_token_id) REFERENCES personal_access_tokens (id) ON DELETE RESTRICT NOT VALID;")
main:    -> 0.0010s
main: -- execute("ALTER TABLE workspaces VALIDATE CONSTRAINT fk_ec70695b2c;")
main:    -> 0.0052s
main: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: migrated (0.0697s) ====

main: == [advisory_lock_connection] object_id: 225600, pg_backend_pid: 66042
ci: == [advisory_lock_connection] object_id: 225920, pg_backend_pid: 66045
ci: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: migrating =============
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- add_column(:workspaces, :personal_access_token_id, :bigint)
ci:    -> 0.0015s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci:    -> 0.0007s
ci: -- index_exists?(:workspaces, :personal_access_token_id, {:name=>"index_workspaces_on_personal_access_token_id", :algorithm=>:concurrently})
ci:    -> 0.0061s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0004s
ci: -- add_index(:workspaces, :personal_access_token_id, {:name=>"index_workspaces_on_personal_access_token_id", :algorithm=>:concurrently})
ci:    -> 0.0046s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0003s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE workspaces ADD CONSTRAINT fk_ec70695b2c FOREIGN KEY (personal_access_token_id) REFERENCES personal_access_tokens (id) ON DELETE RESTRICT NOT VALID;")
ci:    -> 0.0008s
ci: -- execute("ALTER TABLE workspaces VALIDATE CONSTRAINT fk_ec70695b2c;")
ci:    -> 0.0039s
ci: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: migrated (0.0677s) ====

ci: == [advisory_lock_connection] object_id: 225920, pg_backend_pid: 66045
main: == [advisory_lock_connection] object_id: 226320, pg_backend_pid: 66049
main: == 20230821000003 AddConfigVersionToWorkspaces: migrating =====================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- add_column(:workspaces, :config_version, :int, {:default=>1, :null=>false})
main:    -> 0.0014s
main: == 20230821000003 AddConfigVersionToWorkspaces: migrated (0.0056s) ============

main: == [advisory_lock_connection] object_id: 226320, pg_backend_pid: 66049
ci: == [advisory_lock_connection] object_id: 226480, pg_backend_pid: 66051
ci: == 20230821000003 AddConfigVersionToWorkspaces: migrating =====================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- add_column(:workspaces, :config_version, :int, {:default=>1, :null=>false})
ci:    -> 0.0028s
ci: == 20230821000003 AddConfigVersionToWorkspaces: migrated (0.0237s) ============

ci: == [advisory_lock_connection] object_id: 226480, pg_backend_pid: 66051

Down migration

main database

➜  gitlab git:(vtak/private_repos_db_migrations) ✗ bin/rails db:rollback:main STEP=2
main: == [advisory_lock_connection] object_id: 224840, pg_backend_pid: 66703n STEP=2
main: == 20230821000003 AddConfigVersionToWorkspaces: reverting =====================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- remove_column(:workspaces, :config_version, {:if_exists=>true})
main:    -> 0.0615s
main: == 20230821000003 AddConfigVersionToWorkspaces: reverted (0.0777s) ============

main: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: reverting =============
main: -- transaction_open?()
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0006s
main: -- indexes(:workspaces)
main:    -> 0.0055s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0002s
main: -- remove_index(:workspaces, {:algorithm=>:concurrently, :name=>"index_workspaces_on_personal_access_token_id"})
main:    -> 0.0025s
main: -- execute("RESET statement_timeout")
main:    -> 0.0003s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- remove_column(:workspaces, :personal_access_token_id, {:if_exists=>true})
main:    -> 0.0037s
main: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: reverted (0.0521s) ====

main: == [advisory_lock_connection] object_id: 224840, pg_backend_pid: 66703

ci database

➜  gitlab git:(vtak/private_repos_db_migrations) ✗ bin/rails db:rollback:ci STEP=2  
ci: == [advisory_lock_connection] object_id: 224820, pg_backend_pid: 67266
ci: == 20230821000003 AddConfigVersionToWorkspaces: reverting =====================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- remove_column(:workspaces, :config_version, {:if_exists=>true})
ci:    -> 0.0595s
ci: == 20230821000003 AddConfigVersionToWorkspaces: reverted (0.0947s) ============

ci: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: reverting =============
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- view_exists?(:postgres_partitions)
ci:    -> 0.0007s
ci: -- indexes(:workspaces)
ci:    -> 0.0050s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0003s
ci: -- remove_index(:workspaces, {:algorithm=>:concurrently, :name=>"index_workspaces_on_personal_access_token_id"})
ci:    -> 0.0022s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0003s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- remove_column(:workspaces, :personal_access_token_id, {:if_exists=>true})
ci:    -> 0.0033s
ci: == 20230821000002 AddPersonalAccessTokenIdToWorkspaces: reverted (0.0667s) ====

ci: == [advisory_lock_connection] object_id: 224820, pg_backend_pid: 67266

MR acceptance checklist

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

Edited by Vishal Tak

Merge request reports