From 501e979e186a3861581aa54f9930421223688d01 Mon Sep 17 00:00:00 2001 From: nanaya Date: Fri, 19 Aug 2016 00:08:19 +0900 Subject: Use proper casting --- .../lib/active_record/connection_adapters/postgresql_adapter.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 03ee0eec5b..08c81e7478 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -772,9 +772,9 @@ module ActiveRecord SELECT exists( SELECT * FROM pg_proc INNER JOIN pg_cast - ON casttarget::text::oidvector = proargtypes + ON ARRAY[casttarget]::oidvector = proargtypes WHERE proname = 'lower' - AND castsource = '#{column.sql_type}'::regtype::oid + AND castsource = #{quote column.sql_type}::regtype ) end_sql execute_and_clear(sql, "SCHEMA", []) do |result| -- cgit v1.2.3 From 4c2f7ee36a623090d276ef811d959adb0ecff743 Mon Sep 17 00:00:00 2001 From: nanaya Date: Thu, 18 Aug 2016 21:56:15 +0900 Subject: Fix case insensitive check for text column in pg There's no 'text to text' casting in the cast table so the feature detection fails. --- .../lib/active_record/connection_adapters/postgresql_adapter.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 08c81e7478..c9a0287bca 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -770,6 +770,10 @@ module ActiveRecord @case_insensitive_cache[column.sql_type] ||= begin sql = <<-end_sql SELECT exists( + SELECT * FROM pg_proc + WHERE proname = 'lower' + AND proargtypes = ARRAY[#{quote column.sql_type}::regtype]::oidvector + ) OR exists( SELECT * FROM pg_proc INNER JOIN pg_cast ON ARRAY[casttarget]::oidvector = proargtypes -- cgit v1.2.3