Re-add missing routes index on some instances
What does this MR do and why?
This MR re-adds an index in the redirect_routes
table which is missing on several self-managed instances. Adding the index on most instances will be a no-op.
Minor risk: we add a unique index on LOWER(path)
which might cause issues when there are duplicates in the table. I think the risk is minor, because:
- We also have a unique index on
path
. - We have a case insensitive uniqueness validation on the model level.
- Not a high traffic table.
Output
Up:
main: == [advisory_lock_connection] object_id: 124440, pg_backend_pid: 115001
main: == 20240508085441 ReAddRedirectRoutesPathIndex: migrating =====================
main: -- indexes(:redirect_routes)
main: -> 0.0064s
main: == 20240508085441 ReAddRedirectRoutesPathIndex: migrated (0.0096s) ============
main: == [advisory_lock_connection] object_id: 124440, pg_backend_pid: 115001
ci: == [advisory_lock_connection] object_id: 124640, pg_backend_pid: 115003
ci: == 20240508085441 ReAddRedirectRoutesPathIndex: migrating =====================
ci: -- indexes(:redirect_routes)
ci: -> 0.0031s
ci: == 20240508085441 ReAddRedirectRoutesPathIndex: migrated (0.0098s) ============
Up 2, when index is missing:
main: == [advisory_lock_connection] object_id: 124440, pg_backend_pid: 110070
main: == 20240508085441 ReAddRedirectRoutesPathIndex: migrating =====================
main: -- indexes(:redirect_routes)
main: -> 0.0050s
main: -- current_schema(nil)
main: -> 0.0002s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main: -> 0.0005s
main: -- index_exists?(:redirect_routes, "LOWER(path) varchar_pattern_ops", {:unique=>true, :name=>"index_redirect_routes_on_path_unique_text_pattern_ops", :algorithm=>:concurrently})
main: -> 0.0016s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0002s
main: -- add_index(:redirect_routes, "LOWER(path) varchar_pattern_ops", {:unique=>true, :name=>"index_redirect_routes_on_path_unique_text_pattern_ops", :algorithm=>:concurrently})
main: -> 0.0111s
main: -- execute("RESET statement_timeout")
main: -> 0.0003s
main: == 20240508085441 ReAddRedirectRoutesPathIndex: migrated (0.0302s) ============
main: == [advisory_lock_connection] object_id: 124440, pg_backend_pid: 110070
ci: == [advisory_lock_connection] object_id: 124680, pg_backend_pid: 110072
ci: == 20240508085441 ReAddRedirectRoutesPathIndex: migrating =====================
ci: -- indexes(:redirect_routes)
ci: -> 0.0023s
ci: == 20240508085441 ReAddRedirectRoutesPathIndex: migrated (0.0091s) ============
Down:
ci: == [advisory_lock_connection] object_id: 124000, pg_backend_pid: 114039
ci: == 20240508085441 ReAddRedirectRoutesPathIndex: reverting =====================
ci: == 20240508085441 ReAddRedirectRoutesPathIndex: reverted (0.0094s) ============
main: == [advisory_lock_connection] object_id: 124000, pg_backend_pid: 114461
main: == 20240508085441 ReAddRedirectRoutesPathIndex: reverting =====================
main: == 20240508085441 ReAddRedirectRoutesPathIndex: reverted (0.0026s) ============
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #446112 (closed)