30 lines
991 B
Ruby
30 lines
991 B
Ruby
|
# 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
|