diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-12-22 09:52:02 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-12-22 09:55:41 -0700 |
commit | b0f2b94dd30c9ceae98efe5f5f5a589eb68a6286 (patch) | |
tree | a9c9a3750ce7c8bce37808c7ce703a7f0488ae85 /activerecord/test/cases/adapters | |
parent | 0369808917f7a67b6375aaaa34f20d773ae9b339 (diff) | |
download | rails-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/cases/adapters')
-rw-r--r-- | activerecord/test/cases/adapters/postgresql/integer_test.rb | 25 |
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 |