24 lines
1.4 KiB
Diff
24 lines
1.4 KiB
Diff
# UNDF: UNDF-2026-000000245
|
||
Fixes rails-0005/0006: ActiveRecord schema_dumper + PostgreSQL schema_statements — Array#include? in index filtering loops.
|
||
|
||
--- a/activerecord/lib/active_record/schema_dumper.rb
|
||
+++ b/activerecord/lib/active_record/schema_dumper.rb
|
||
|
||
@@ DEFECT rails-0005: lines 247-255
|
||
|
||
- exclusion_constraint_names = exclusion_constraints.collect(&:name) # Array — O(C) include?
|
||
+ exclusion_constraint_names = exclusion_constraints.collect(&:name).to_set # FIX: O(1) include?
|
||
indexes = indexes.reject { |index| exclusion_constraint_names.include?(index.name) } # O(I) × O(1) — fixed
|
||
|
||
- unique_constraint_names = unique_constraints.collect(&:name) # Array — O(C) include?
|
||
+ unique_constraint_names = unique_constraints.collect(&:name).to_set # FIX: O(1) include?
|
||
indexes = indexes.reject { |index| unique_constraint_names.include?(index.name) } # O(I) × O(1) — fixed
|
||
|
||
--- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
|
||
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
|
||
|
||
@@ DEFECT rails-0006: line ~133-139
|
||
|
||
- include_columns = include ? include.split(",").map { ... } : [] # Array — O(I) include?
|
||
+ include_set = include ? include.split(",").map { ... }.to_set : [].to_set # FIX: O(1)
|
||
columns.reject! { |c| include_set.include?(c) } # O(C) × O(1) — fixed
|