activerecord 6.0.0.rc1 → 6.0.3.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of activerecord might be problematic. Click here for more details.

Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +251 -3
  3. data/README.rdoc +1 -1
  4. data/lib/active_record.rb +1 -0
  5. data/lib/active_record/advisory_lock_base.rb +18 -0
  6. data/lib/active_record/aggregations.rb +0 -1
  7. data/lib/active_record/association_relation.rb +10 -8
  8. data/lib/active_record/associations.rb +2 -2
  9. data/lib/active_record/associations/alias_tracker.rb +0 -1
  10. data/lib/active_record/associations/association.rb +5 -1
  11. data/lib/active_record/associations/builder/collection_association.rb +2 -2
  12. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +1 -3
  13. data/lib/active_record/associations/collection_association.rb +6 -2
  14. data/lib/active_record/associations/collection_proxy.rb +2 -3
  15. data/lib/active_record/associations/has_many_association.rb +0 -1
  16. data/lib/active_record/associations/join_dependency.rb +23 -9
  17. data/lib/active_record/associations/join_dependency/join_association.rb +12 -3
  18. data/lib/active_record/associations/preloader.rb +2 -3
  19. data/lib/active_record/associations/preloader/association.rb +3 -1
  20. data/lib/active_record/attribute_assignment.rb +0 -1
  21. data/lib/active_record/attribute_decorators.rb +0 -2
  22. data/lib/active_record/attribute_methods.rb +0 -51
  23. data/lib/active_record/attribute_methods/before_type_cast.rb +0 -1
  24. data/lib/active_record/attribute_methods/dirty.rb +8 -3
  25. data/lib/active_record/attribute_methods/primary_key.rb +0 -2
  26. data/lib/active_record/attribute_methods/read.rb +0 -1
  27. data/lib/active_record/attribute_methods/serialization.rb +0 -1
  28. data/lib/active_record/attribute_methods/time_zone_conversion.rb +0 -2
  29. data/lib/active_record/attribute_methods/write.rb +0 -1
  30. data/lib/active_record/attributes.rb +0 -1
  31. data/lib/active_record/autosave_association.rb +11 -7
  32. data/lib/active_record/callbacks.rb +1 -2
  33. data/lib/active_record/coders/yaml_column.rb +0 -1
  34. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +107 -13
  35. data/lib/active_record/connection_adapters/abstract/database_statements.rb +21 -15
  36. data/lib/active_record/connection_adapters/abstract/query_cache.rb +5 -5
  37. data/lib/active_record/connection_adapters/abstract/quoting.rb +53 -0
  38. data/lib/active_record/connection_adapters/abstract/schema_creation.rb +1 -2
  39. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +27 -27
  40. data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +1 -1
  41. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +55 -37
  42. data/lib/active_record/connection_adapters/abstract/transaction.rb +14 -7
  43. data/lib/active_record/connection_adapters/abstract_adapter.rb +62 -25
  44. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +25 -32
  45. data/lib/active_record/connection_adapters/connection_specification.rb +3 -4
  46. data/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb +2 -2
  47. data/lib/active_record/connection_adapters/mysql/column.rb +1 -1
  48. data/lib/active_record/connection_adapters/mysql/database_statements.rb +8 -12
  49. data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +0 -1
  50. data/lib/active_record/connection_adapters/mysql/quoting.rb +44 -7
  51. data/lib/active_record/connection_adapters/mysql/schema_creation.rb +1 -2
  52. data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +3 -1
  53. data/lib/active_record/connection_adapters/mysql/schema_statements.rb +8 -8
  54. data/lib/active_record/connection_adapters/mysql2_adapter.rb +12 -4
  55. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +9 -3
  56. data/lib/active_record/connection_adapters/postgresql/oid/array.rb +0 -1
  57. data/lib/active_record/connection_adapters/postgresql/oid/enum.rb +0 -1
  58. data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +0 -1
  59. data/lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb +0 -1
  60. data/lib/active_record/connection_adapters/postgresql/oid/money.rb +2 -2
  61. data/lib/active_record/connection_adapters/postgresql/oid/oid.rb +1 -1
  62. data/lib/active_record/connection_adapters/postgresql/oid/point.rb +0 -1
  63. data/lib/active_record/connection_adapters/postgresql/oid/range.rb +0 -1
  64. data/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +1 -1
  65. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +0 -1
  66. data/lib/active_record/connection_adapters/postgresql/quoting.rb +39 -2
  67. data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +1 -1
  68. data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +2 -2
  69. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +1 -1
  70. data/lib/active_record/connection_adapters/postgresql/schema_dumper.rb +0 -1
  71. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +15 -29
  72. data/lib/active_record/connection_adapters/postgresql/utils.rb +0 -1
  73. data/lib/active_record/connection_adapters/postgresql_adapter.rb +17 -3
  74. data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +8 -7
  75. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +38 -3
  76. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +3 -3
  77. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +23 -8
  78. data/lib/active_record/connection_adapters/statement_pool.rb +0 -1
  79. data/lib/active_record/connection_handling.rb +17 -22
  80. data/lib/active_record/core.rb +8 -6
  81. data/lib/active_record/counter_cache.rb +4 -1
  82. data/lib/active_record/database_configurations.rb +60 -31
  83. data/lib/active_record/database_configurations/url_config.rb +0 -1
  84. data/lib/active_record/dynamic_matchers.rb +2 -3
  85. data/lib/active_record/enum.rb +9 -0
  86. data/lib/active_record/explain.rb +0 -1
  87. data/lib/active_record/fixture_set/table_row.rb +0 -1
  88. data/lib/active_record/fixture_set/table_rows.rb +0 -1
  89. data/lib/active_record/fixtures.rb +11 -9
  90. data/lib/active_record/gem_version.rb +1 -1
  91. data/lib/active_record/inheritance.rb +0 -3
  92. data/lib/active_record/insert_all.rb +5 -6
  93. data/lib/active_record/internal_metadata.rb +1 -1
  94. data/lib/active_record/locking/optimistic.rb +0 -1
  95. data/lib/active_record/log_subscriber.rb +1 -1
  96. data/lib/active_record/middleware/database_selector.rb +3 -4
  97. data/lib/active_record/middleware/database_selector/resolver.rb +5 -8
  98. data/lib/active_record/migration.rb +43 -32
  99. data/lib/active_record/migration/command_recorder.rb +6 -18
  100. data/lib/active_record/migration/compatibility.rb +3 -3
  101. data/lib/active_record/migration/join_table.rb +0 -1
  102. data/lib/active_record/model_schema.rb +3 -2
  103. data/lib/active_record/nested_attributes.rb +0 -2
  104. data/lib/active_record/no_touching.rb +2 -2
  105. data/lib/active_record/null_relation.rb +0 -1
  106. data/lib/active_record/persistence.rb +4 -5
  107. data/lib/active_record/querying.rb +1 -1
  108. data/lib/active_record/railtie.rb +1 -2
  109. data/lib/active_record/railties/collection_cache_association_loading.rb +1 -1
  110. data/lib/active_record/railties/databases.rake +63 -23
  111. data/lib/active_record/reflection.rb +9 -9
  112. data/lib/active_record/relation.rb +13 -1
  113. data/lib/active_record/relation/batches.rb +0 -1
  114. data/lib/active_record/relation/calculations.rb +3 -5
  115. data/lib/active_record/relation/delegation.rb +7 -6
  116. data/lib/active_record/relation/finder_methods.rb +14 -4
  117. data/lib/active_record/relation/from_clause.rb +4 -0
  118. data/lib/active_record/relation/merger.rb +6 -3
  119. data/lib/active_record/relation/predicate_builder.rb +1 -5
  120. data/lib/active_record/relation/query_methods.rb +94 -55
  121. data/lib/active_record/relation/spawn_methods.rb +0 -1
  122. data/lib/active_record/relation/where_clause.rb +0 -1
  123. data/lib/active_record/result.rb +0 -1
  124. data/lib/active_record/sanitization.rb +30 -2
  125. data/lib/active_record/schema.rb +1 -1
  126. data/lib/active_record/schema_dumper.rb +5 -1
  127. data/lib/active_record/schema_migration.rb +1 -1
  128. data/lib/active_record/scoping.rb +0 -1
  129. data/lib/active_record/scoping/default.rb +0 -1
  130. data/lib/active_record/scoping/named.rb +3 -3
  131. data/lib/active_record/store.rb +1 -1
  132. data/lib/active_record/suppressor.rb +2 -2
  133. data/lib/active_record/table_metadata.rb +21 -10
  134. data/lib/active_record/tasks/database_tasks.rb +76 -8
  135. data/lib/active_record/tasks/mysql_database_tasks.rb +3 -2
  136. data/lib/active_record/tasks/postgresql_database_tasks.rb +0 -1
  137. data/lib/active_record/tasks/sqlite_database_tasks.rb +0 -1
  138. data/lib/active_record/test_databases.rb +1 -16
  139. data/lib/active_record/test_fixtures.rb +2 -1
  140. data/lib/active_record/timestamp.rb +26 -17
  141. data/lib/active_record/touch_later.rb +3 -2
  142. data/lib/active_record/transactions.rb +18 -19
  143. data/lib/active_record/type.rb +0 -1
  144. data/lib/active_record/type/adapter_specific_registry.rb +2 -5
  145. data/lib/active_record/type/hash_lookup_type_map.rb +0 -1
  146. data/lib/active_record/type/serialized.rb +0 -1
  147. data/lib/active_record/type/type_map.rb +0 -1
  148. data/lib/active_record/type/unsigned_integer.rb +0 -1
  149. data/lib/active_record/type_caster/connection.rb +16 -10
  150. data/lib/active_record/validations.rb +3 -3
  151. data/lib/active_record/validations/associated.rb +1 -2
  152. data/lib/arel.rb +17 -6
  153. data/lib/arel/predications.rb +5 -6
  154. data/lib/arel/visitors/depth_first.rb +1 -2
  155. data/lib/arel/visitors/dot.rb +0 -1
  156. data/lib/arel/visitors/mssql.rb +0 -1
  157. data/lib/arel/visitors/oracle.rb +1 -2
  158. data/lib/arel/visitors/oracle12.rb +0 -1
  159. data/lib/arel/visitors/postgresql.rb +0 -1
  160. data/lib/arel/visitors/sqlite.rb +0 -1
  161. data/lib/arel/visitors/to_sql.rb +23 -27
  162. data/lib/arel/visitors/visitor.rb +9 -6
  163. data/lib/arel/visitors/where_sql.rb +0 -1
  164. data/lib/rails/generators/active_record/application_record/application_record_generator.rb +0 -1
  165. data/lib/rails/generators/active_record/migration.rb +0 -1
  166. data/lib/rails/generators/active_record/migration/templates/migration.rb.tt +1 -1
  167. data/lib/rails/generators/active_record/model/model_generator.rb +0 -1
  168. metadata +13 -9
@@ -4,7 +4,6 @@ module Arel # :nodoc: all
4
4
  module Visitors
5
5
  class PostgreSQL < Arel::Visitors::ToSql
6
6
  private
7
-
8
7
  def visit_Arel_Nodes_Matches(o, collector)
9
8
  op = o.case_sensitive ? " LIKE " : " ILIKE "
10
9
  collector = infix_value o, collector, op
@@ -4,7 +4,6 @@ module Arel # :nodoc: all
4
4
  module Visitors
5
5
  class SQLite < Arel::Visitors::ToSql
6
6
  private
7
-
8
7
  # Locks are not supported in SQLite
9
8
  def visit_Arel_Nodes_Lock(o, collector)
10
9
  collector
@@ -19,7 +19,6 @@ module Arel # :nodoc: all
19
19
  end
20
20
 
21
21
  private
22
-
23
22
  def visit_Arel_Nodes_DeleteStatement(o, collector)
24
23
  o = prepare_delete_statement(o)
25
24
 
@@ -52,10 +51,14 @@ module Arel # :nodoc: all
52
51
  def visit_Arel_Nodes_InsertStatement(o, collector)
53
52
  collector << "INSERT INTO "
54
53
  collector = visit o.relation, collector
55
- if o.columns.any?
56
- collector << " (#{o.columns.map { |x|
57
- quote_column_name x.name
58
- }.join ', '})"
54
+
55
+ unless o.columns.empty?
56
+ collector << " ("
57
+ o.columns.each_with_index do |x, i|
58
+ collector << ", " unless i == 0
59
+ collector << quote_column_name(x.name)
60
+ end
61
+ collector << ")"
59
62
  end
60
63
 
61
64
  if o.values
@@ -97,22 +100,20 @@ module Arel # :nodoc: all
97
100
  def visit_Arel_Nodes_ValuesList(o, collector)
98
101
  collector << "VALUES "
99
102
 
100
- len = o.rows.length - 1
101
- o.rows.each_with_index { |row, i|
103
+ o.rows.each_with_index do |row, i|
104
+ collector << ", " unless i == 0
102
105
  collector << "("
103
- row_len = row.length - 1
104
106
  row.each_with_index do |value, k|
107
+ collector << ", " unless k == 0
105
108
  case value
106
109
  when Nodes::SqlLiteral, Nodes::BindParam
107
110
  collector = visit(value, collector)
108
111
  else
109
112
  collector << quote(value).to_s
110
113
  end
111
- collector << ", " unless k == row_len
112
114
  end
113
115
  collector << ")"
114
- collector << ", " unless i == len
115
- }
116
+ end
116
117
  collector
117
118
  end
118
119
 
@@ -128,11 +129,10 @@ module Arel # :nodoc: all
128
129
 
129
130
  unless o.orders.empty?
130
131
  collector << " ORDER BY "
131
- len = o.orders.length - 1
132
- o.orders.each_with_index { |x, i|
132
+ o.orders.each_with_index do |x, i|
133
+ collector << ", " unless i == 0
133
134
  collector = visit(x, collector)
134
- collector << ", " unless len == i
135
- }
135
+ end
136
136
  end
137
137
 
138
138
  visit_Arel_Nodes_SelectOptions(o, collector)
@@ -506,7 +506,7 @@ module Arel # :nodoc: all
506
506
 
507
507
  def visit_Arel_Table(o, collector)
508
508
  if o.table_alias
509
- collector << "#{quote_table_name o.name} #{quote_table_name o.table_alias}"
509
+ collector << quote_table_name(o.name) << " " << quote_table_name(o.table_alias)
510
510
  else
511
511
  collector << quote_table_name(o.name)
512
512
  end
@@ -682,13 +682,12 @@ module Arel # :nodoc: all
682
682
  end
683
683
 
684
684
  def visit_Arel_Nodes_UnqualifiedColumn(o, collector)
685
- collector << "#{quote_column_name o.name}"
686
- collector
685
+ collector << quote_column_name(o.name)
687
686
  end
688
687
 
689
688
  def visit_Arel_Attributes_Attribute(o, collector)
690
689
  join_name = o.relation.table_alias || o.relation.name
691
- collector << "#{quote_table_name join_name}.#{quote_column_name o.name}"
690
+ collector << quote_table_name(join_name) << "." << quote_column_name(o.name)
692
691
  end
693
692
  alias :visit_Arel_Attributes_Integer :visit_Arel_Attributes_Attribute
694
693
  alias :visit_Arel_Attributes_Float :visit_Arel_Attributes_Attribute
@@ -785,14 +784,11 @@ module Arel # :nodoc: all
785
784
  end
786
785
 
787
786
  def inject_join(list, collector, join_str)
788
- len = list.length - 1
789
- list.each_with_index.inject(collector) { |c, (x, i)|
790
- if i == len
791
- visit x, c
792
- else
793
- visit(x, c) << join_str
794
- end
795
- }
787
+ list.each_with_index do |x, i|
788
+ collector << join_str unless i == 0
789
+ collector = visit(x, collector)
790
+ end
791
+ collector
796
792
  end
797
793
 
798
794
  def unboundable?(value)
@@ -7,16 +7,15 @@ module Arel # :nodoc: all
7
7
  @dispatch = get_dispatch_cache
8
8
  end
9
9
 
10
- def accept(object, *args)
11
- visit object, *args
10
+ def accept(object, collector = nil)
11
+ visit object, collector
12
12
  end
13
13
 
14
14
  private
15
-
16
15
  attr_reader :dispatch
17
16
 
18
17
  def self.dispatch_cache
19
- Hash.new do |hash, klass|
18
+ @dispatch_cache ||= Hash.new do |hash, klass|
20
19
  hash[klass] = "visit_#{(klass.name || '').gsub('::', '_')}"
21
20
  end
22
21
  end
@@ -25,9 +24,13 @@ module Arel # :nodoc: all
25
24
  self.class.dispatch_cache
26
25
  end
27
26
 
28
- def visit(object, *args)
27
+ def visit(object, collector = nil)
29
28
  dispatch_method = dispatch[object.class]
30
- send dispatch_method, object, *args
29
+ if collector
30
+ send dispatch_method, object, collector
31
+ else
32
+ send dispatch_method, object
33
+ end
31
34
  rescue NoMethodError => e
32
35
  raise e if respond_to?(dispatch_method, true)
33
36
  superklass = object.class.ancestors.find { |klass|
@@ -9,7 +9,6 @@ module Arel # :nodoc: all
9
9
  end
10
10
 
11
11
  private
12
-
13
12
  def visit_Arel_Nodes_SelectCore(o, collector)
14
13
  collector << "WHERE "
15
14
  wheres = o.wheres.map do |where|
@@ -13,7 +13,6 @@ module ActiveRecord
13
13
  end
14
14
 
15
15
  private
16
-
17
16
  def application_record_file_name
18
17
  @application_record_file_name ||=
19
18
  if namespaced?
@@ -17,7 +17,6 @@ module ActiveRecord
17
17
  end
18
18
 
19
19
  private
20
-
21
20
  def primary_key_type
22
21
  key_type = options[:primary_key_type]
23
22
  ", id: :#{key_type}" if key_type
@@ -37,7 +37,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
37
37
  <%- if attribute.has_index? -%>
38
38
  remove_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
39
39
  <%- end -%>
40
- <%- if !attribute.virtual? %>
40
+ <%- if !attribute.virtual? -%>
41
41
  remove_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
42
42
  <%- end -%>
43
43
  <%- end -%>
@@ -35,7 +35,6 @@ module ActiveRecord
35
35
  hook_for :test_framework
36
36
 
37
37
  private
38
-
39
38
  def attributes_with_index
40
39
  attributes.select { |a| !a.reference? && a.has_index? }
41
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.rc1
4
+ version: 6.0.3.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-24 00:00:00.000000000 Z
11
+ date: 2020-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 6.0.0.rc1
19
+ version: 6.0.3.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 6.0.0.rc1
26
+ version: 6.0.3.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 6.0.0.rc1
33
+ version: 6.0.3.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 6.0.0.rc1
40
+ version: 6.0.3.rc1
41
41
  description: Databases on Rails. Build a persistent domain model by mapping database
42
42
  tables to Ruby classes. Strong conventions for associations, validations, aggregations,
43
43
  migrations, and testing come baked-in.
@@ -53,6 +53,7 @@ files:
53
53
  - examples/performance.rb
54
54
  - examples/simple.rb
55
55
  - lib/active_record.rb
56
+ - lib/active_record/advisory_lock_base.rb
56
57
  - lib/active_record/aggregations.rb
57
58
  - lib/active_record/association_relation.rb
58
59
  - lib/active_record/associations.rb
@@ -389,8 +390,11 @@ homepage: https://rubyonrails.org
389
390
  licenses:
390
391
  - MIT
391
392
  metadata:
392
- source_code_uri: https://github.com/rails/rails/tree/v6.0.0.rc1/activerecord
393
- changelog_uri: https://github.com/rails/rails/blob/v6.0.0.rc1/activerecord/CHANGELOG.md
393
+ bug_tracker_uri: https://github.com/rails/rails/issues
394
+ changelog_uri: https://github.com/rails/rails/blob/v6.0.3.rc1/activerecord/CHANGELOG.md
395
+ documentation_uri: https://api.rubyonrails.org/v6.0.3.rc1/
396
+ mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
397
+ source_code_uri: https://github.com/rails/rails/tree/v6.0.3.rc1/activerecord
394
398
  post_install_message:
395
399
  rdoc_options:
396
400
  - "--main"
@@ -408,7 +412,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
408
412
  - !ruby/object:Gem::Version
409
413
  version: 1.3.1
410
414
  requirements: []
411
- rubygems_version: 3.0.1
415
+ rubygems_version: 3.1.2
412
416
  signing_key:
413
417
  specification_version: 4
414
418
  summary: Object-relational mapper framework (part of Rails).