From 0270363f5c3868f921ee028943aca125774afdd5 Mon Sep 17 00:00:00 2001
From: Guo Xiang Tan <tgx_world@hotmail.com>
Date: Mon, 1 Dec 2014 21:28:50 +0800
Subject: Fix value extracted from negative integers for PostgreSQL.

Fixes: https://github.com/rails/rails/issues/17856.
---
 .../lib/active_record/connection_adapters/postgresql_adapter.rb       | 2 +-
 activerecord/test/cases/defaults_test.rb                              | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
index 3698957d8d..fd3232e902 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -532,7 +532,7 @@ module ActiveRecord
             when 'true', 'false'
               default
             # Numeric types
-            when /\A\(?(-?\d+(\.\d*)?\)?(::bigint)?)\z/
+            when /\A\(?(-?\d+(\.\d*)?)\)?(::bigint)?\z/
               $1
             # Object identifier types
             when /\A-?\d+\z/
diff --git a/activerecord/test/cases/defaults_test.rb b/activerecord/test/cases/defaults_test.rb
index c089e63128..3e6032e266 100644
--- a/activerecord/test/cases/defaults_test.rb
+++ b/activerecord/test/cases/defaults_test.rb
@@ -36,6 +36,10 @@ class DefaultTest < ActiveRecord::TestCase
       assert( "--- []\n\n" == Default.columns_hash['multiline_default'].default ||
                "--- []\\012\\012" == Default.columns_hash['multiline_default'].default)
     end
+
+    def test_default_negative_integer
+      assert_equal "-1", Default.columns_hash['negative_integer'].default
+    end
   end
 end
 
-- 
cgit v1.2.3