From 319482d8fe49d70817ffa0f30ab6653b1ea9cbac Mon Sep 17 00:00:00 2001 From: Yves Senn Date: Wed, 5 Sep 2012 13:06:28 +0200 Subject: postgres, map scaled intervals to string datatype (#7518) --- .../lib/active_record/connection_adapters/postgresql_adapter.rb | 2 +- activerecord/test/cases/adapters/postgresql/datatype_test.rb | 4 +++- activerecord/test/schema/postgresql_specific_schema.rb | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index c508afb33e..d1751d70c6 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -181,7 +181,7 @@ module ActiveRecord # Date/time types when /^timestamp with(?:out)? time zone$/ :datetime - when 'interval' + when /^interval(?:|\(\d+\))$/ :string # Geometric types when /^(?:point|line|lseg|box|"?path"?|polygon|circle)$/ diff --git a/activerecord/test/cases/adapters/postgresql/datatype_test.rb b/activerecord/test/cases/adapters/postgresql/datatype_test.rb index a4d9286d52..a7f6d9c580 100644 --- a/activerecord/test/cases/adapters/postgresql/datatype_test.rb +++ b/activerecord/test/cases/adapters/postgresql/datatype_test.rb @@ -51,7 +51,7 @@ class PostgresqlDataTypeTest < ActiveRecord::TestCase @connection.execute("INSERT INTO postgresql_numbers (single, double) VALUES (123.456, 123456.789)") @first_number = PostgresqlNumber.find(1) - @connection.execute("INSERT INTO postgresql_times (time_interval) VALUES ('1 year 2 days ago')") + @connection.execute("INSERT INTO postgresql_times (time_interval, scaled_time_interval) VALUES ('1 year 2 days ago', '3 weeks ago')") @first_time = PostgresqlTime.find(1) @connection.execute("INSERT INTO postgresql_network_addresses (cidr_address, inet_address, mac_address) VALUES('192.168.0/24', '172.16.1.254/32', '01:23:45:67:89:0a')") @@ -89,6 +89,7 @@ class PostgresqlDataTypeTest < ActiveRecord::TestCase def test_data_type_of_time_types assert_equal :string, @first_time.column_for_attribute(:time_interval).type + assert_equal :string, @first_time.column_for_attribute(:scaled_time_interval).type end def test_data_type_of_network_address_types @@ -142,6 +143,7 @@ class PostgresqlDataTypeTest < ActiveRecord::TestCase def test_time_values assert_equal '-1 years -2 days', @first_time.time_interval + assert_equal '-21 days', @first_time.scaled_time_interval end def test_network_address_values_ipaddr diff --git a/activerecord/test/schema/postgresql_specific_schema.rb b/activerecord/test/schema/postgresql_specific_schema.rb index 2d8c0aa69a..2cd9f30b59 100644 --- a/activerecord/test/schema/postgresql_specific_schema.rb +++ b/activerecord/test/schema/postgresql_specific_schema.rb @@ -109,7 +109,8 @@ _SQL execute <<_SQL CREATE TABLE postgresql_times ( id SERIAL PRIMARY KEY, - time_interval INTERVAL + time_interval INTERVAL, + scaled_time_interval INTERVAL(6) ); _SQL -- cgit v1.2.3