diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2006-02-09 18:06:29 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2006-02-09 18:06:29 +0000 |
commit | 5991e5c789da5adc260ceb9ba77da31d65991fbc (patch) | |
tree | a6613a2a8e3806af0b72da42a5e4d2c598eb7f5f /activerecord | |
parent | d49a5fcb4cfe90824337dc3756bae7161cea768b (diff) | |
download | rails-5991e5c789da5adc260ceb9ba77da31d65991fbc.tar.gz rails-5991e5c789da5adc260ceb9ba77da31d65991fbc.tar.bz2 rails-5991e5c789da5adc260ceb9ba77da31d65991fbc.zip |
PostgreSQL: correctly parse negative integer column defaults. References #3776.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3554 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 2 | ||||
-rw-r--r-- | activerecord/test/defaults_test.rb | 14 | ||||
-rw-r--r-- | activerecord/test/fixtures/db_definitions/postgresql.sql | 4 |
4 files changed, 20 insertions, 2 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 03a9f25325..1a287ec7d8 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* PostgreSQL: correctly parse negative integer column defaults. #3776 [bellis@deepthought.org] + * Fix problems with count when used with :include [Jeremy Hopple and Kevin Clark] * ActiveRecord::RecordInvalid now states which validations failed in its default error message [Tobias Luetke] diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 066a71fab6..a5bef4138d 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -468,7 +468,7 @@ module ActiveRecord return $1 if value =~ /^'(.*)'::(bpchar|text|character varying)$/ # Numeric values - return value if value =~ /^[0-9]+(\.[0-9]*)?/ + return value if value =~ /^-?[0-9]+(\.[0-9]*)?/ # Date / Time magic values return Time.now.to_s if value =~ /^now\(\)|^\('now'::text\)::(date|timestamp)/i diff --git a/activerecord/test/defaults_test.rb b/activerecord/test/defaults_test.rb new file mode 100644 index 0000000000..59bc3ae0bd --- /dev/null +++ b/activerecord/test/defaults_test.rb @@ -0,0 +1,14 @@ +require 'abstract_unit' +require 'fixtures/default' + +class DefaultsTest < Test::Unit::TestCase + if %w(PostgreSQL).include? ActiveRecord::Base.connection.adapter_name + def test_default_integers + default = Default.new + assert_instance_of(Fixnum, default.positive_integer) + assert_equal(default.positive_integer, 1) + assert_instance_of(Fixnum, default.negative_integer) + assert_equal(default.negative_integer, -1) + end + end +end diff --git a/activerecord/test/fixtures/db_definitions/postgresql.sql b/activerecord/test/fixtures/db_definitions/postgresql.sql index 32f6f32fe0..c01afc206d 100644 --- a/activerecord/test/fixtures/db_definitions/postgresql.sql +++ b/activerecord/test/fixtures/db_definitions/postgresql.sql @@ -111,7 +111,9 @@ CREATE TABLE defaults ( fixed_time timestamp default '2004-01-01 00:00:00.000000-00', char1 char(1) default 'Y', char2 character varying(50) default 'a varchar field', - char3 text default 'a text field' + char3 text default 'a text field', + positive_integer integer default 1, + negative_integer integer default -1 ); CREATE TABLE auto_id_tests ( |