Skip to content

Commit 680f503

Browse files
authored
Merge pull request rails#49772 from fatkodima/reload-type_map-for-enums
Reload type map when creating or dropping PostgreSQL enums
2 parents 421df52 + c4a6d13 commit 680f503

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ def create_enum(name, values, **options)
544544
END
545545
$$;
546546
SQL
547-
internal_exec_query(query)
547+
internal_exec_query(query).tap { reload_type_map }
548548
end
549549

550550
# Drops an enum type.
@@ -560,7 +560,7 @@ def drop_enum(name, values = nil, **options)
560560
query = <<~SQL
561561
DROP TYPE#{' IF EXISTS' if options[:if_exists]} #{quote_table_name(name)};
562562
SQL
563-
internal_exec_query(query)
563+
internal_exec_query(query).tap { reload_type_map }
564564
end
565565

566566
# Rename an existing enum type to something else.

activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -460,11 +460,18 @@ def test_raise_error_when_cannot_translate_exception
460460

461461
def test_reload_type_map_for_newly_defined_types
462462
@connection.create_enum "feeling", ["good", "bad"]
463-
result = @connection.select_all "SELECT 'good'::feeling"
464-
assert_instance_of(PostgreSQLAdapter::OID::Enum,
465-
result.column_types["feeling"])
463+
464+
# Runs only SELECT, no type map reloading.
465+
assert_queries(1, ignore_none: true) do
466+
result = @connection.select_all "SELECT 'good'::feeling"
467+
assert_instance_of(PostgreSQLAdapter::OID::Enum,
468+
result.column_types["feeling"])
469+
end
466470
ensure
467-
@connection.drop_enum "feeling", if_exists: true
471+
# Reloads type map.
472+
assert_sql(/from pg_type/i) do
473+
@connection.drop_enum "feeling", if_exists: true
474+
end
468475
reset_connection
469476
end
470477

0 commit comments

Comments
 (0)