gitlab-ce/config/initializers/postgres_partitioning.rb

59 lines
1.7 KiB
Ruby

# frozen_string_literal: true
Gitlab::Database::Partitioning.register_models(
[
AuditEvent,
WebHookLog,
LooseForeignKeys::DeletedRecord,
Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog,
Ci::RunnerManagerBuild,
Ci::JobAnnotation,
Ci::BuildMetadata,
CommitStatus,
BatchedGitRefUpdates::Deletion,
Users::ProjectVisit,
Users::GroupVisit,
Ci::Catalog::Resources::SyncEvent
])
if Gitlab.ee?
Gitlab::Database::Partitioning.register_models(
[
IncidentManagement::PendingEscalations::Alert,
IncidentManagement::PendingEscalations::Issue,
Security::Finding,
Analytics::ValueStreamDashboard::Count,
Ci::FinishedBuildChSyncEvent
])
else
Gitlab::Database::Partitioning.register_tables(
[
{
limit_connection_names: %i[main],
table_name: 'incident_management_pending_alert_escalations',
partitioned_column: :process_at, strategy: :monthly
},
{
limit_connection_names: %i[main],
table_name: 'incident_management_pending_issue_escalations',
partitioned_column: :process_at, strategy: :monthly
}
])
end
# The following tables are already defined as models
unless Gitlab.jh?
Gitlab::Database::Partitioning.register_tables(
[
# This should be synchronized with the following model:
# https://jihulab.com/gitlab-cn/gitlab/-/blob/main-jh/jh/app/models/phone/verification_code.rb
{
limit_connection_names: %i[main],
table_name: 'verification_codes',
partitioned_column: :created_at, strategy: :monthly
}
])
end
Gitlab::Database::Partitioning.sync_partitions_ignore_db_error