diff options
author | Yuji Yaginuma <yuuji.yaginuma@gmail.com> | 2018-09-17 08:03:21 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-17 08:03:21 +0900 |
commit | c021157748a858a0160cf2dcbace8e61bcaabc99 (patch) | |
tree | 5e25cda460d91979ee101c013b4db1c9fce6d2e4 | |
parent | 2df65b6fae6d5356ba783809a3c9a598f1539e3e (diff) | |
parent | 6c46aad3f5edce30e009bd89d0a11dc3d95ffa93 (diff) | |
download | rails-c021157748a858a0160cf2dcbace8e61bcaabc99.tar.gz rails-c021157748a858a0160cf2dcbace8e61bcaabc99.tar.bz2 rails-c021157748a858a0160cf2dcbace8e61bcaabc99.zip |
Merge pull request #33188 from larskanis/pg-1.1
PostgreSQL: prepare for pg-1.1
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb | 8 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb index 26abeea7ed..6fbeaa2b9e 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb @@ -33,7 +33,13 @@ module ActiveRecord def cast(value) if value.is_a?(::String) - value = @pg_decoder.decode(value) + value = begin + @pg_decoder.decode(value) + rescue TypeError + # malformed array string is treated as [], will raise in PG 2.0 gem + # this keeps a consistent implementation + [] + end end type_cast_array(value, :cast) end diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 3ee344a249..11593f71c9 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -4,6 +4,14 @@ gem "pg", ">= 0.18", "< 2.0" require "pg" +# Use async_exec instead of exec_params on pg versions before 1.1 +class ::PG::Connection + unless self.public_method_defined?(:async_exec_params) + remove_method :exec_params + alias exec_params async_exec + end +end + require "active_record/connection_adapters/abstract_adapter" require "active_record/connection_adapters/statement_pool" require "active_record/connection_adapters/postgresql/column" @@ -606,7 +614,7 @@ module ActiveRecord type_casted_binds = type_casted_binds(binds) log(sql, name, binds, type_casted_binds) do ActiveSupport::Dependencies.interlock.permit_concurrent_loads do - @connection.async_exec(sql, type_casted_binds) + @connection.exec_params(sql, type_casted_binds) end end end |