aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-12-22 09:52:02 -0700
committerSean Griffin <sean@thoughtbot.com>2014-12-22 09:55:41 -0700
commitb0f2b94dd30c9ceae98efe5f5f5a589eb68a6286 (patch)
treea9c9a3750ce7c8bce37808c7ce703a7f0488ae85 /activerecord/test
parent0369808917f7a67b6375aaaa34f20d773ae9b339 (diff)
downloadrails-b0f2b94dd30c9ceae98efe5f5f5a589eb68a6286.tar.gz
rails-b0f2b94dd30c9ceae98efe5f5f5a589eb68a6286.tar.bz2
rails-b0f2b94dd30c9ceae98efe5f5f5a589eb68a6286.zip
Correctly handle limit on int4 and int8 types in PG
PG doesn't register it's types using the `int(4)` format that others do. As such, if we alias `int8` to the other integer types, the range information is lost. This is fixed by simply registering it separately. The other option (which I specifically chose to avoid) is to pass the information of the original type that was being aliased as an argument. I'd rather avoid that, since an alias should truly be treated the same. If we need different behavior for a different type, we should explicitly register it with that, and not have a conditional based on aliasing. Fixes #18144 [Sean Griffin & ysbaddaden]
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/adapters/postgresql/integer_test.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/integer_test.rb b/activerecord/test/cases/adapters/postgresql/integer_test.rb
new file mode 100644
index 0000000000..7f8751281e
--- /dev/null
+++ b/activerecord/test/cases/adapters/postgresql/integer_test.rb
@@ -0,0 +1,25 @@
+require "cases/helper"
+require "active_support/core_ext/numeric/bytes"
+
+class PostgresqlIntegerTest < ActiveRecord::TestCase
+ class PgInteger < ActiveRecord::Base
+ end
+
+ def setup
+ @connection = ActiveRecord::Base.connection
+
+ @connection.transaction do
+ @connection.create_table "pg_integers", force: true do |t|
+ t.integer :quota, limit: 8, default: 2.gigabytes
+ end
+ end
+ end
+
+ teardown do
+ @connection.execute "drop table if exists pg_integers"
+ end
+
+ test "schema properly respects bigint ranges" do
+ assert_equal 2.gigabytes, PgInteger.new.quota
+ end
+end