summaryrefslogtreecommitdiff
path: root/db/migrate/20211007090229_create_issue_search_table.rb
blob: 1fc15d20bd04479639099d9d713674f8eef3f3f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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