diff options
author | Jean Boussier <jean.boussier@gmail.com> | 2019-04-08 13:10:15 +0200 |
---|---|---|
committer | Jean Boussier <jean.boussier@gmail.com> | 2019-06-03 13:31:42 +0200 |
commit | 17acb771d815f030ac1cf36b1af4050f02816c39 (patch) | |
tree | 7ebab580a70c36274c18011546e357f532f7b0a5 /activerecord/test/cases | |
parent | eece0bf1087dc2cb59605a5a9beb88c6b935c194 (diff) | |
download | rails-17acb771d815f030ac1cf36b1af4050f02816c39.tar.gz rails-17acb771d815f030ac1cf36b1af4050f02816c39.tar.bz2 rails-17acb771d815f030ac1cf36b1af4050f02816c39.zip |
Deduplicate various Active Record schema cache structures
Real world database schemas contain a lot of duplicated data.
Some column names like `id`, `created_at` etc can easily be repeated
hundreds of times. Same for SqlTypeMetada, most database will contain
only a limited number of possible combinations.
This result in a lot of wasted memory.
The idea here is to make these data sctructures immutable, use a registry
to substitute similar instances with pre-existing ones.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/base_test.rb | 9 | ||||
-rw-r--r-- | activerecord/test/cases/json_serialization_test.rb | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index ddafa468ed..1c83100a75 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -1141,11 +1141,14 @@ class BasicsTest < ActiveRecord::TestCase def test_clear_cache! # preheat cache c1 = Post.connection.schema_cache.columns("posts") + assert_not_equal 0, Post.connection.schema_cache.size + ActiveRecord::Base.clear_cache! + assert_equal 0, Post.connection.schema_cache.size + c2 = Post.connection.schema_cache.columns("posts") - c1.each_with_index do |v, i| - assert_not_same v, c2[i] - end + assert_not_equal 0, Post.connection.schema_cache.size + assert_equal c1, c2 end diff --git a/activerecord/test/cases/json_serialization_test.rb b/activerecord/test/cases/json_serialization_test.rb index 82cf281cff..8f9b1e2ec1 100644 --- a/activerecord/test/cases/json_serialization_test.rb +++ b/activerecord/test/cases/json_serialization_test.rb @@ -24,7 +24,7 @@ class JsonSerializationTest < ActiveRecord::TestCase include JsonSerializationHelpers class NamespacedContact < Contact - column :name, :string + column :name, "string" end def setup |