summaryrefslogtreecommitdiff
path: root/db/migrate/20211007090229_create_issue_search_table.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20211007090229_create_issue_search_table.rb')
-rw-r--r--db/migrate/20211007090229_create_issue_search_table.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/db/migrate/20211007090229_create_issue_search_table.rb b/db/migrate/20211007090229_create_issue_search_table.rb
new file mode 100644
index 00000000000..1fc15d20bd0
--- /dev/null
+++ b/db/migrate/20211007090229_create_issue_search_table.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+class CreateIssueSearchTable < Gitlab::Database::Migration[1.0]
+ include Gitlab::Database::PartitioningMigrationHelpers::TableManagementHelpers
+
+ def up
+ execute <<~SQL
+ CREATE TABLE issue_search_data (
+ project_id bigint NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
+ issue_id bigint NOT NULL REFERENCES issues(id) ON DELETE CASCADE,
+ created_at timestamp with time zone DEFAULT NOW() NOT NULL,
+ updated_at timestamp with time zone DEFAULT NOW() NOT NULL,
+ search_vector tsvector,
+ PRIMARY KEY (project_id, issue_id)
+ ) PARTITION BY HASH (project_id)
+ SQL
+
+ # rubocop: disable Migration/AddIndex
+ add_index :issue_search_data, :issue_id
+ add_index :issue_search_data, :search_vector, using: :gin, name: 'index_issue_search_data_on_search_vector'
+ # rubocop: enable Migration/AddIndex
+
+ create_hash_partitions :issue_search_data, 64
+ end
+
+ def down
+ drop_table :issue_search_data
+ end
+end