Skip to content
代码片段 群组 项目
未验证 提交 c55a1779 编辑于 作者: Marius Bobin's avatar Marius Bobin 提交者: GitLab
浏览文件

Merge branch '422835-async-index-creation5' into 'master'

Prepare async index for p_ci_builds.project_id

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145362



Merged-by: default avatarMarius Bobin <mbobin@gitlab.com>
Approved-by: default avatarMarius Bobin <mbobin@gitlab.com>
Reviewed-by: default avatarMarius Bobin <mbobin@gitlab.com>
Reviewed-by: default avatarTianwen Chen <tchen@gitlab.com>
Co-authored-by: default avatarTianwen Chen <tchen@gitlab.com>
No related branches found
No related tags found
无相关合并请求
# frozen_string_literal: true
class PrepareAsyncIndexForBuildsPart5 < Gitlab::Database::Migration[2.2]
include Gitlab::Database::PartitioningMigrationHelpers
milestone '17.0'
INDEXES = [
{
name: :p_ci_builds_project_id_bigint_name_ref_idx,
columns: [:project_id_convert_to_bigint, :name, :ref],
options: { where: "type::text = 'Ci::Build'::text AND status::text = 'success'::text AND (retried = false OR retried IS NULL)" } # rubocop:disable Layout/LineLength -- it's just too long
},
{
name: :p_ci_builds_project_id_bigint_status_idx,
columns: [:project_id_convert_to_bigint, :status],
options: { where: "type::text = 'Ci::Build'::text AND (status::text = ANY (ARRAY['running'::character varying::text, 'pending'::character varying::text, 'created'::character varying::text]))" } # rubocop:disable Layout/LineLength -- it's just too long
},
{
name: :p_ci_builds_status_created_at_project_id_bigint_idx,
columns: [:status, :created_at, :project_id_convert_to_bigint],
options: { where: "type::text = 'Ci::Build'::text" }
}
]
TABLE_NAME = :p_ci_builds
def up
Gitlab::Database::PostgresPartitionedTable.each_partition(TABLE_NAME) do |partition|
INDEXES.each do |definition|
name, columns, options = definition.values_at(:name, :columns, :options)
index_name = generated_index_name(partition.identifier, name)
prepare_async_index partition.identifier, columns, name: index_name, **(options || {})
end
end
end
def down
Gitlab::Database::PostgresPartitionedTable.each_partition(TABLE_NAME) do |partition|
INDEXES.each do |definition|
name, columns, options = definition.values_at(:name, :columns, :options)
index_name = generated_index_name(partition.identifier, name)
unprepare_async_index partition.identifier, columns, name: index_name, **(options || {})
end
end
end
end
8f92fddae271fb9d10bfde8e9e17de16e03683ed73f078a5025a71f7a52b7df3
\ No newline at end of file
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册