sequel 5.38.0 → 5.43.0

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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +54 -0
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +1 -1
  5. data/doc/cheat_sheet.rdoc +5 -5
  6. data/doc/code_order.rdoc +0 -12
  7. data/doc/fork_safety.rdoc +84 -0
  8. data/doc/postgresql.rdoc +1 -1
  9. data/doc/querying.rdoc +3 -3
  10. data/doc/release_notes/5.39.0.txt +19 -0
  11. data/doc/release_notes/5.40.0.txt +40 -0
  12. data/doc/release_notes/5.41.0.txt +25 -0
  13. data/doc/release_notes/5.42.0.txt +136 -0
  14. data/doc/release_notes/5.43.0.txt +98 -0
  15. data/doc/sql.rdoc +1 -1
  16. data/doc/testing.rdoc +2 -0
  17. data/lib/sequel/adapters/ado.rb +16 -16
  18. data/lib/sequel/adapters/jdbc.rb +2 -2
  19. data/lib/sequel/adapters/shared/mssql.rb +21 -1
  20. data/lib/sequel/adapters/shared/postgres.rb +5 -3
  21. data/lib/sequel/adapters/shared/sqlite.rb +35 -1
  22. data/lib/sequel/database/misc.rb +1 -2
  23. data/lib/sequel/database/schema_generator.rb +16 -1
  24. data/lib/sequel/database/schema_methods.rb +19 -5
  25. data/lib/sequel/database/transactions.rb +1 -1
  26. data/lib/sequel/dataset/features.rb +10 -0
  27. data/lib/sequel/dataset/prepared_statements.rb +2 -0
  28. data/lib/sequel/dataset/sql.rb +32 -10
  29. data/lib/sequel/extensions/async_thread_pool.rb +438 -0
  30. data/lib/sequel/extensions/blank.rb +8 -0
  31. data/lib/sequel/extensions/date_arithmetic.rb +7 -9
  32. data/lib/sequel/extensions/eval_inspect.rb +2 -0
  33. data/lib/sequel/extensions/inflector.rb +8 -0
  34. data/lib/sequel/extensions/migration.rb +2 -0
  35. data/lib/sequel/extensions/named_timezones.rb +5 -1
  36. data/lib/sequel/extensions/pg_array.rb +1 -0
  37. data/lib/sequel/extensions/pg_interval.rb +34 -8
  38. data/lib/sequel/extensions/pg_row.rb +1 -0
  39. data/lib/sequel/extensions/query.rb +2 -0
  40. data/lib/sequel/model/associations.rb +28 -4
  41. data/lib/sequel/model/base.rb +23 -6
  42. data/lib/sequel/model/plugins.rb +5 -0
  43. data/lib/sequel/plugins/association_proxies.rb +2 -0
  44. data/lib/sequel/plugins/async_thread_pool.rb +39 -0
  45. data/lib/sequel/plugins/auto_validations.rb +15 -1
  46. data/lib/sequel/plugins/column_encryption.rb +711 -0
  47. data/lib/sequel/plugins/composition.rb +7 -2
  48. data/lib/sequel/plugins/constraint_validations.rb +2 -1
  49. data/lib/sequel/plugins/dataset_associations.rb +4 -1
  50. data/lib/sequel/plugins/json_serializer.rb +37 -22
  51. data/lib/sequel/plugins/nested_attributes.rb +8 -3
  52. data/lib/sequel/plugins/pg_array_associations.rb +4 -0
  53. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +2 -0
  54. data/lib/sequel/plugins/serialization.rb +8 -3
  55. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  56. data/lib/sequel/plugins/single_table_inheritance.rb +2 -0
  57. data/lib/sequel/plugins/tree.rb +9 -4
  58. data/lib/sequel/plugins/validation_helpers.rb +6 -2
  59. data/lib/sequel/timezones.rb +8 -3
  60. data/lib/sequel/version.rb +1 -1
  61. metadata +36 -21
@@ -143,10 +143,14 @@ module Sequel
143
143
  compositions[name] = send(composer_meth)
144
144
  end
145
145
  end
146
- define_method("#{name}=") do |v|
146
+ alias_method(name, name)
147
+
148
+ meth = :"#{name}="
149
+ define_method(meth) do |v|
147
150
  modified!
148
151
  compositions[name] = v
149
152
  end
153
+ alias_method(meth, meth)
150
154
  end
151
155
  end
152
156
 
@@ -167,8 +171,9 @@ module Sequel
167
171
 
168
172
  # Freeze compositions hash when freezing model instance.
169
173
  def freeze
170
- compositions.freeze
174
+ compositions
171
175
  super
176
+ compositions.freeze
172
177
  end
173
178
 
174
179
  # For each composition, set the columns in the model class based
@@ -220,7 +220,8 @@ module Sequel
220
220
  '%'
221
221
  when '%'
222
222
  '.*'
223
- when '_'
223
+ else
224
+ #when '_'
224
225
  '.'
225
226
  end
226
227
  end
@@ -62,7 +62,10 @@ module Sequel
62
62
  ret = super
63
63
  r = association_reflection(name)
64
64
  meth = r.returns_array? ? name : pluralize(name).to_sym
65
- dataset_module{define_method(meth){associated(name)}}
65
+ dataset_module do
66
+ define_method(meth){associated(name)}
67
+ alias_method(meth, meth)
68
+ end
66
69
  ret
67
70
  end
68
71
 
@@ -133,21 +133,39 @@ module Sequel
133
133
  end
134
134
  end
135
135
 
136
- # Helper class used for making sure that cascading options
137
- # for model associations works correctly. Cascaded options
138
- # work by creating instances of this class, which take a
139
- # literal JSON string and have +to_json+ return it.
136
+ # SEQUEL6: Remove
137
+ # :nocov:
140
138
  class Literal
141
- # Store the literal JSON to use
142
139
  def initialize(json)
143
140
  @json = json
144
141
  end
145
142
 
146
- # Return the literal JSON to use
147
143
  def to_json(*a)
148
144
  @json
149
145
  end
150
146
  end
147
+ # :nocov:
148
+ Sequel::Deprecation.deprecate_constant(self, :Literal)
149
+
150
+ # Convert the given object to a JSON data structure using the given arguments.
151
+ def self.object_to_json_data(obj, *args, &block)
152
+ if obj.is_a?(Array)
153
+ obj.map{|x| object_to_json_data(x, *args, &block)}
154
+ else
155
+ if obj.respond_to?(:to_json_data)
156
+ obj.to_json_data(*args, &block)
157
+ else
158
+ begin
159
+ Sequel.parse_json(Sequel.object_to_json(obj, *args, &block))
160
+ # :nocov:
161
+ rescue Sequel.json_parser_error_class
162
+ # Support for old Ruby code that only supports parsing JSON object/array
163
+ Sequel.parse_json(Sequel.object_to_json([obj], *args, &block))[0]
164
+ # :nocov:
165
+ end
166
+ end
167
+ end
168
+ end
151
169
 
152
170
  module ClassMethods
153
171
  # The default opts to use when serializing model objects to JSON.
@@ -324,20 +342,7 @@ module Sequel
324
342
  end
325
343
 
326
344
  v = v.empty? ? [] : [v]
327
-
328
- objs = public_send(k)
329
-
330
- is_array = if r = model.association_reflection(k)
331
- r.returns_array?
332
- else
333
- objs.is_a?(Array)
334
- end
335
-
336
- h[key_name] = if is_array
337
- objs.map{|obj| Literal.new(Sequel.object_to_json(obj, *v))}
338
- else
339
- Literal.new(Sequel.object_to_json(objs, *v))
340
- end
345
+ h[key_name] = JsonSerializer.object_to_json_data(public_send(k), *v)
341
346
  end
342
347
  else
343
348
  Array(inc).each do |c|
@@ -347,7 +352,8 @@ module Sequel
347
352
  else
348
353
  key_name = c.to_s
349
354
  end
350
- h[key_name] = public_send(c)
355
+
356
+ h[key_name] = JsonSerializer.object_to_json_data(public_send(c))
351
357
  end
352
358
  end
353
359
  end
@@ -362,6 +368,15 @@ module Sequel
362
368
  h = yield h if block_given?
363
369
  Sequel.object_to_json(h, *a)
364
370
  end
371
+
372
+ # Convert the receiver to a JSON data structure using the given arguments.
373
+ def to_json_data(*args, &block)
374
+ if block
375
+ to_json(*args){|x| return block.call(x)}
376
+ else
377
+ to_json(*args){|x| return x}
378
+ end
379
+ end
365
380
  end
366
381
 
367
382
  module DatasetMethods
@@ -420,7 +435,7 @@ module Sequel
420
435
  else
421
436
  all
422
437
  end
423
- array.map{|obj| Literal.new(Sequel.object_to_json(obj, opts, &opts[:instance_block]))}
438
+ JsonSerializer.object_to_json_data(array, opts, &opts[:instance_block])
424
439
  else
425
440
  all
426
441
  end
@@ -108,9 +108,10 @@ module Sequel
108
108
  # array of the allowable fields.
109
109
  # :limit :: For *_to_many associations, a limit on the number of records
110
110
  # that will be processed, to prevent denial of service attacks.
111
- # :reject_if :: A proc that is given each attribute hash before it is
111
+ # :reject_if :: A proc that is called with each attribute hash before it is
112
112
  # passed to its associated object. If the proc returns a truthy
113
113
  # value, the attribute hash is ignored.
114
+ # :reject_nil :: Ignore nil objects passed to nested attributes setter methods.
114
115
  # :remove :: Allow disassociation of nested records (can remove the associated
115
116
  # object from the parent object, but not destroy the associated object).
116
117
  # :require_modification :: Whether to require modification of nested objects when
@@ -145,9 +146,12 @@ module Sequel
145
146
  # class.
146
147
  def def_nested_attribute_method(reflection)
147
148
  @nested_attributes_module.class_eval do
148
- define_method("#{reflection[:name]}_attributes=") do |v|
149
- set_nested_attributes(reflection[:name], v)
149
+ meth = :"#{reflection[:name]}_attributes="
150
+ assoc = reflection[:name]
151
+ define_method(meth) do |v|
152
+ set_nested_attributes(assoc, v)
150
153
  end
154
+ alias_method meth, meth
151
155
  end
152
156
  end
153
157
  end
@@ -159,6 +163,7 @@ module Sequel
159
163
  def set_nested_attributes(assoc, obj, opts=OPTS)
160
164
  raise(Error, "no association named #{assoc} for #{model.inspect}") unless ref = model.association_reflection(assoc)
161
165
  raise(Error, "nested attributes are not enabled for association #{assoc} for #{model.inspect}") unless meta = ref[:nested_attributes]
166
+ return if obj.nil? && meta[:reject_nil]
162
167
  meta = meta.merge(opts)
163
168
  meta[:reflection] = ref
164
169
  if ref.returns_array?
@@ -520,7 +520,9 @@ module Sequel
520
520
  def many_to_pg_array_association_filter_expression(op, ref, obj)
521
521
  pk = ref.qualify(model.table_name, ref.primary_key)
522
522
  key = ref[:key]
523
+ # :nocov:
523
524
  expr = case obj
525
+ # :nocov:
524
526
  when Sequel::Model
525
527
  if (assoc_pks = obj.get_column_value(key)) && !assoc_pks.empty?
526
528
  Sequel[pk=>assoc_pks.to_a]
@@ -540,7 +542,9 @@ module Sequel
540
542
  # Support filtering by pg_array_to_many associations using a subquery.
541
543
  def pg_array_to_many_association_filter_expression(op, ref, obj)
542
544
  key = ref.qualify(model.table_name, ref[:key_column])
545
+ # :nocov:
543
546
  expr = case obj
547
+ # :nocov:
544
548
  when Sequel::Model
545
549
  if pkv = obj.get_column_value(ref.primary_key_method)
546
550
  Sequel.pg_array_op(key).contains(Sequel.pg_array([pkv], ref.array_type))
@@ -250,7 +250,9 @@ module Sequel
250
250
  messages = model.pg_auto_constraint_validations_messages
251
251
 
252
252
  unless override
253
+ # :nocov:
253
254
  case e
255
+ # :nocov:
254
256
  when Sequel::NotNullConstraintViolation
255
257
  if column = info[:column]
256
258
  add_pg_constraint_validation_error([m.call(column)], messages[:not_null])
@@ -127,7 +127,7 @@ module Sequel
127
127
  def serialize_attributes(format, *columns)
128
128
  if format.is_a?(Symbol)
129
129
  unless format = Sequel.synchronize{REGISTERED_FORMATS[format]}
130
- raise(Error, "Unsupported serialization format: #{format} (valid formats: #{Sequel.synchronize{REGISTERED_FORMATS.keys}.map(&:inspect).join})")
130
+ raise(Error, "Unsupported serialization format: #{format} (valid formats: #{Sequel.synchronize{REGISTERED_FORMATS.keys}.inspect})")
131
131
  end
132
132
  end
133
133
  serializer, deserializer = format
@@ -154,7 +154,10 @@ module Sequel
154
154
  deserialized_values[column] = deserialize_value(column, super())
155
155
  end
156
156
  end
157
- define_method("#{column}=") do |v|
157
+ alias_method(column, column)
158
+
159
+ setter = :"#{column}="
160
+ define_method(setter) do |v|
158
161
  cc = changed_columns
159
162
  if !cc.include?(column) && (new? || get_column_value(column) != v)
160
163
  cc << column
@@ -164,6 +167,7 @@ module Sequel
164
167
 
165
168
  deserialized_values[column] = v
166
169
  end
170
+ alias_method(setter, setter)
167
171
  end
168
172
  end
169
173
  end
@@ -177,8 +181,9 @@ module Sequel
177
181
 
178
182
  # Freeze the deserialized values
179
183
  def freeze
180
- deserialized_values.freeze
184
+ deserialized_values
181
185
  super
186
+ deserialized_values.freeze
182
187
  end
183
188
 
184
189
  # Serialize deserialized values before saving
@@ -50,8 +50,8 @@ module Sequel
50
50
  # Freeze the original deserialized values when freezing the instance.
51
51
  def freeze
52
52
  @original_deserialized_values ||= {}
53
- @original_deserialized_values.freeze
54
53
  super
54
+ @original_deserialized_values.freeze
55
55
  end
56
56
 
57
57
  private
@@ -251,6 +251,8 @@ module Sequel
251
251
  super
252
252
  end
253
253
 
254
+ private
255
+
254
256
  # Don't allow use of prepared statements.
255
257
  def use_prepared_statements_for?(type)
256
258
  false
@@ -45,6 +45,7 @@ module Sequel
45
45
 
46
46
  model.instance_exec do
47
47
  @parent_column = opts[:key]
48
+ @qualified_parent_column = Sequel.deep_qualify(table_name, opts[:key])
48
49
  @tree_order = opts[:order]
49
50
  @parent_association_name = parent
50
51
  @children_association_name = children
@@ -59,17 +60,21 @@ module Sequel
59
60
  # The column symbol or array of column symbols on which to order the tree.
60
61
  attr_accessor :tree_order
61
62
 
62
- # The symbol for the column containing the value pointing to the
63
- # parent of the leaf.
63
+ # The symbol or array of symbols for the column containing the value pointing to the
64
+ # parent of the node.
64
65
  attr_accessor :parent_column
65
66
 
67
+ # The qualified identifier or array of qualified identifiers for the column
68
+ # containing the value pointing to the parent of the node.
69
+ attr_accessor :qualified_parent_column
70
+
66
71
  # The association name for the parent association
67
72
  attr_reader :parent_association_name
68
73
 
69
74
  # The association name for the children association
70
75
  attr_reader :children_association_name
71
76
 
72
- Plugins.inherited_instance_variables(self, :@parent_column=>nil, :@tree_order=>nil, :@parent_association_name=>nil, :@children_association_name=>nil)
77
+ Plugins.inherited_instance_variables(self, :@parent_column=>nil, :@qualified_parent_column=>nil, :@tree_order=>nil, :@parent_association_name=>nil, :@children_association_name=>nil)
73
78
  Plugins.def_dataset_methods(self, [:roots, :roots_dataset])
74
79
 
75
80
  # Should freeze tree order if it is an array when freezing the model class.
@@ -151,7 +156,7 @@ module Sequel
151
156
  #
152
157
  # TreeClass.roots_dataset # => Sequel::Dataset instance
153
158
  def roots_dataset
154
- ds = where(Sequel.or(Array(model.parent_column).zip([])))
159
+ ds = where(Sequel.or(Array(model.qualified_parent_column).zip([])))
155
160
  ds = ds.order(*model.tree_order) if model.tree_order
156
161
  ds
157
162
  end
@@ -36,6 +36,7 @@ module Sequel
36
36
  # :message :: The message to use. Can be a string which is used directly, or a
37
37
  # proc which is called. If the validation method takes a argument before the array of attributes,
38
38
  # that argument is passed as an argument to the proc.
39
+ # :skip_invalid :: Do not try to validate columns that are already invalid.
39
40
  #
40
41
  # The default validation options for all models can be modified by
41
42
  # overridding the Model#default_validation_helpers_options private method.
@@ -281,14 +282,17 @@ module Sequel
281
282
  DEFAULT_OPTIONS[type]
282
283
  end
283
284
 
284
- # Skip validating any attribute that matches one of the allow_* options.
285
+ # Skip validating any attribute that matches one of the allow_* options,
286
+ # or already has an error if the skip_invalid option is given.
287
+ #
285
288
  # Otherwise, yield the attribute, value, and passed option :message to
286
289
  # the block. If the block returns anything except nil or false, add it as
287
290
  # an error message for that attributes.
288
291
  def validatable_attributes(atts, opts)
289
- am, an, ab, m = opts.values_at(:allow_missing, :allow_nil, :allow_blank, :message)
292
+ am, an, ab, m, si = opts.values_at(:allow_missing, :allow_nil, :allow_blank, :message, :skip_invalid)
290
293
  from_values = opts[:from] == :values
291
294
  Array(atts).each do |a|
295
+ next if si && errors.on(a)
292
296
  next if am && !values.has_key?(a)
293
297
  v = from_values ? values[a] : get_column_value(a)
294
298
  next if an && v.nil?
@@ -10,9 +10,14 @@ module Sequel
10
10
  Timezones = SequelMethods
11
11
  Deprecation.deprecate_constant(self, :Timezones)
12
12
 
13
- # Sequel doesn't pay much attention to timezones by default, but you can set it
14
- # handle timezones if you want. There are three separate timezone settings, application_timezone,
15
- # database_timezone, and typecast_timezone. All three timezones have getter and setter methods.
13
+ # Sequel doesn't pay much attention to timezones by default, but you can set it to
14
+ # handle timezones if you want. There are three separate timezone settings:
15
+ #
16
+ # * application_timezone
17
+ # * database_timezone
18
+ # * typecast_timezone
19
+ #
20
+ # All three timezones have getter and setter methods.
16
21
  # You can set all three timezones to the same value at once via <tt>Sequel.default_timezone=</tt>.
17
22
  #
18
23
  # The only timezone values that are supported by default are <tt>:utc</tt> (convert to UTC),
@@ -6,7 +6,7 @@ module Sequel
6
6
 
7
7
  # The minor version of Sequel. Bumped for every non-patch level
8
8
  # release, generally around once a month.
9
- MINOR = 38
9
+ MINOR = 43
10
10
 
11
11
  # The tiny version of Sequel. Usually 0, only bumped for bugfix
12
12
  # releases that fix regressions from previous versions.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.38.0
4
+ version: 5.43.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Evans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-01 00:00:00.000000000 Z
11
+ date: 2021-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -117,9 +117,8 @@ extra_rdoc_files:
117
117
  - README.rdoc
118
118
  - CHANGELOG
119
119
  - MIT-LICENSE
120
- - doc/association_basics.rdoc
121
- - doc/model_dataset_method_design.rdoc
122
120
  - doc/advanced_associations.rdoc
121
+ - doc/association_basics.rdoc
123
122
  - doc/bin_sequel.rdoc
124
123
  - doc/cheat_sheet.rdoc
125
124
  - doc/code_order.rdoc
@@ -127,36 +126,30 @@ extra_rdoc_files:
127
126
  - doc/dataset_basics.rdoc
128
127
  - doc/dataset_filtering.rdoc
129
128
  - doc/extensions.rdoc
129
+ - doc/fork_safety.rdoc
130
130
  - doc/mass_assignment.rdoc
131
131
  - doc/migration.rdoc
132
- - doc/opening_databases.rdoc
132
+ - doc/model_dataset_method_design.rdoc
133
133
  - doc/model_hooks.rdoc
134
134
  - doc/model_plugins.rdoc
135
- - doc/object_model.rdoc
136
- - doc/sql.rdoc
137
135
  - doc/mssql_stored_procedures.rdoc
138
- - doc/thread_safety.rdoc
136
+ - doc/object_model.rdoc
137
+ - doc/opening_databases.rdoc
139
138
  - doc/postgresql.rdoc
140
- - doc/querying.rdoc
141
139
  - doc/prepared_statements.rdoc
140
+ - doc/querying.rdoc
142
141
  - doc/reflection.rdoc
143
- - doc/security.rdoc
144
- - doc/virtual_rows.rdoc
145
142
  - doc/schema_modification.rdoc
143
+ - doc/security.rdoc
146
144
  - doc/sharding.rdoc
145
+ - doc/sql.rdoc
147
146
  - doc/testing.rdoc
148
- - doc/validations.rdoc
147
+ - doc/thread_safety.rdoc
149
148
  - doc/transactions.rdoc
150
- - doc/release_notes/5.5.0.txt
151
- - doc/release_notes/5.6.0.txt
149
+ - doc/validations.rdoc
150
+ - doc/virtual_rows.rdoc
152
151
  - doc/release_notes/5.0.0.txt
153
152
  - doc/release_notes/5.1.0.txt
154
- - doc/release_notes/5.2.0.txt
155
- - doc/release_notes/5.3.0.txt
156
- - doc/release_notes/5.4.0.txt
157
- - doc/release_notes/5.8.0.txt
158
- - doc/release_notes/5.7.0.txt
159
- - doc/release_notes/5.9.0.txt
160
153
  - doc/release_notes/5.10.0.txt
161
154
  - doc/release_notes/5.11.0.txt
162
155
  - doc/release_notes/5.12.0.txt
@@ -167,6 +160,7 @@ extra_rdoc_files:
167
160
  - doc/release_notes/5.17.0.txt
168
161
  - doc/release_notes/5.18.0.txt
169
162
  - doc/release_notes/5.19.0.txt
163
+ - doc/release_notes/5.2.0.txt
170
164
  - doc/release_notes/5.20.0.txt
171
165
  - doc/release_notes/5.21.0.txt
172
166
  - doc/release_notes/5.22.0.txt
@@ -177,6 +171,7 @@ extra_rdoc_files:
177
171
  - doc/release_notes/5.27.0.txt
178
172
  - doc/release_notes/5.28.0.txt
179
173
  - doc/release_notes/5.29.0.txt
174
+ - doc/release_notes/5.3.0.txt
180
175
  - doc/release_notes/5.30.0.txt
181
176
  - doc/release_notes/5.31.0.txt
182
177
  - doc/release_notes/5.32.0.txt
@@ -186,6 +181,17 @@ extra_rdoc_files:
186
181
  - doc/release_notes/5.36.0.txt
187
182
  - doc/release_notes/5.37.0.txt
188
183
  - doc/release_notes/5.38.0.txt
184
+ - doc/release_notes/5.39.0.txt
185
+ - doc/release_notes/5.4.0.txt
186
+ - doc/release_notes/5.40.0.txt
187
+ - doc/release_notes/5.41.0.txt
188
+ - doc/release_notes/5.42.0.txt
189
+ - doc/release_notes/5.43.0.txt
190
+ - doc/release_notes/5.5.0.txt
191
+ - doc/release_notes/5.6.0.txt
192
+ - doc/release_notes/5.7.0.txt
193
+ - doc/release_notes/5.8.0.txt
194
+ - doc/release_notes/5.9.0.txt
189
195
  files:
190
196
  - CHANGELOG
191
197
  - MIT-LICENSE
@@ -200,6 +206,7 @@ files:
200
206
  - doc/dataset_basics.rdoc
201
207
  - doc/dataset_filtering.rdoc
202
208
  - doc/extensions.rdoc
209
+ - doc/fork_safety.rdoc
203
210
  - doc/mass_assignment.rdoc
204
211
  - doc/migration.rdoc
205
212
  - doc/model_dataset_method_design.rdoc
@@ -245,7 +252,12 @@ files:
245
252
  - doc/release_notes/5.36.0.txt
246
253
  - doc/release_notes/5.37.0.txt
247
254
  - doc/release_notes/5.38.0.txt
255
+ - doc/release_notes/5.39.0.txt
248
256
  - doc/release_notes/5.4.0.txt
257
+ - doc/release_notes/5.40.0.txt
258
+ - doc/release_notes/5.41.0.txt
259
+ - doc/release_notes/5.42.0.txt
260
+ - doc/release_notes/5.43.0.txt
249
261
  - doc/release_notes/5.5.0.txt
250
262
  - doc/release_notes/5.6.0.txt
251
263
  - doc/release_notes/5.7.0.txt
@@ -344,6 +356,7 @@ files:
344
356
  - lib/sequel/extensions/_pretty_table.rb
345
357
  - lib/sequel/extensions/any_not_empty.rb
346
358
  - lib/sequel/extensions/arbitrary_servers.rb
359
+ - lib/sequel/extensions/async_thread_pool.rb
347
360
  - lib/sequel/extensions/auto_literal_strings.rb
348
361
  - lib/sequel/extensions/blank.rb
349
362
  - lib/sequel/extensions/caller_logging.rb
@@ -439,6 +452,7 @@ files:
439
452
  - lib/sequel/plugins/association_multi_add_remove.rb
440
453
  - lib/sequel/plugins/association_pks.rb
441
454
  - lib/sequel/plugins/association_proxies.rb
455
+ - lib/sequel/plugins/async_thread_pool.rb
442
456
  - lib/sequel/plugins/auto_validations.rb
443
457
  - lib/sequel/plugins/before_after_save.rb
444
458
  - lib/sequel/plugins/blacklist_security.rb
@@ -447,6 +461,7 @@ files:
447
461
  - lib/sequel/plugins/caching.rb
448
462
  - lib/sequel/plugins/class_table_inheritance.rb
449
463
  - lib/sequel/plugins/column_conflicts.rb
464
+ - lib/sequel/plugins/column_encryption.rb
450
465
  - lib/sequel/plugins/column_select.rb
451
466
  - lib/sequel/plugins/columns_updated.rb
452
467
  - lib/sequel/plugins/composition.rb
@@ -551,7 +566,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
551
566
  - !ruby/object:Gem::Version
552
567
  version: '0'
553
568
  requirements: []
554
- rubygems_version: 3.1.4
569
+ rubygems_version: 3.2.3
555
570
  signing_key:
556
571
  specification_version: 4
557
572
  summary: The Database Toolkit for Ruby