diff options
author | Yves Senn <yves.senn@gmail.com> | 2014-04-10 20:39:21 +0200 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2014-04-11 11:07:38 +0200 |
commit | 9f62344d9552f0a58e4aa43ca6f1a7fec273a04e (patch) | |
tree | ac02482ca57cffa96327a2231cbddf303069ceca /activerecord | |
parent | 0c9bbc632642895676684ed7e2978ab69b04de80 (diff) | |
download | rails-9f62344d9552f0a58e4aa43ca6f1a7fec273a04e.tar.gz rails-9f62344d9552f0a58e4aa43ca6f1a7fec273a04e.tar.bz2 rails-9f62344d9552f0a58e4aa43ca6f1a7fec273a04e.zip |
PostgreSQL, warn once per connection per missing OID. Closes #14275.
[Yves Senn & Matthew Draper]
Diffstat (limited to 'activerecord')
3 files changed, 19 insertions, 2 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index c0264df8e1..00ea49fa9d 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,9 @@ +* PostgreSQL adapter only warns once for every missing OID per connection. + + Fixes #14275. + + *Matthew Draper*, *Yves Senn* + * PostgreSQL adapter automatically reloads it's type map when encountering unknown OIDs. diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 207e1c4fed..0485093123 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -565,8 +565,8 @@ module ActiveRecord end type_map.fetch(oid, fmod) { - warn "unknown OID #{oid}: failed to recognize type of #{column_name}" - OID::Identity.new + warn "unknown OID #{oid}: failed to recognize type of '#{column_name}'. It will be treated as String." + type_map[oid] = OID::Identity.new } end diff --git a/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb b/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb index d319bd0b80..b7791078db 100644 --- a/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb +++ b/activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb @@ -385,6 +385,17 @@ module ActiveRecord reset_connection end + def test_only_warn_on_first_encounter_of_unknown_oid + warning = capture(:stderr) { + @connection.select_all "SELECT NULL::anyelement" + @connection.select_all "SELECT NULL::anyelement" + @connection.select_all "SELECT NULL::anyelement" + } + assert_match(/\Aunknown OID \d+: failed to recognize type of 'anyelement'. It will be treated as String.\n\z/, warning) + ensure + reset_connection + end + private def insert(ctx, data) binds = data.map { |name, value| |