sequel 5.40.0 → 5.45.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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +52 -0
  3. data/MIT-LICENSE +1 -1
  4. data/doc/release_notes/5.41.0.txt +25 -0
  5. data/doc/release_notes/5.42.0.txt +136 -0
  6. data/doc/release_notes/5.43.0.txt +98 -0
  7. data/doc/release_notes/5.44.0.txt +32 -0
  8. data/doc/release_notes/5.45.0.txt +34 -0
  9. data/doc/sql.rdoc +1 -1
  10. data/doc/testing.rdoc +3 -0
  11. data/doc/virtual_rows.rdoc +1 -1
  12. data/lib/sequel/adapters/ado.rb +16 -16
  13. data/lib/sequel/adapters/odbc.rb +5 -1
  14. data/lib/sequel/adapters/shared/postgres.rb +4 -14
  15. data/lib/sequel/adapters/shared/sqlite.rb +8 -4
  16. data/lib/sequel/core.rb +11 -0
  17. data/lib/sequel/database/misc.rb +1 -2
  18. data/lib/sequel/database/schema_generator.rb +35 -47
  19. data/lib/sequel/database/schema_methods.rb +4 -0
  20. data/lib/sequel/dataset/query.rb +1 -3
  21. data/lib/sequel/dataset/sql.rb +7 -0
  22. data/lib/sequel/extensions/async_thread_pool.rb +438 -0
  23. data/lib/sequel/extensions/blank.rb +2 -0
  24. data/lib/sequel/extensions/date_arithmetic.rb +32 -23
  25. data/lib/sequel/extensions/inflector.rb +2 -0
  26. data/lib/sequel/extensions/named_timezones.rb +5 -1
  27. data/lib/sequel/extensions/pg_enum.rb +1 -1
  28. data/lib/sequel/extensions/pg_interval.rb +12 -2
  29. data/lib/sequel/extensions/pg_loose_count.rb +3 -1
  30. data/lib/sequel/model/associations.rb +70 -14
  31. data/lib/sequel/model/base.rb +2 -2
  32. data/lib/sequel/plugins/async_thread_pool.rb +39 -0
  33. data/lib/sequel/plugins/auto_validations.rb +15 -1
  34. data/lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb +68 -0
  35. data/lib/sequel/plugins/column_encryption.rb +728 -0
  36. data/lib/sequel/plugins/composition.rb +2 -1
  37. data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
  38. data/lib/sequel/plugins/json_serializer.rb +37 -22
  39. data/lib/sequel/plugins/nested_attributes.rb +5 -2
  40. data/lib/sequel/plugins/pg_array_associations.rb +6 -4
  41. data/lib/sequel/plugins/rcte_tree.rb +27 -19
  42. data/lib/sequel/plugins/serialization.rb +8 -3
  43. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  44. data/lib/sequel/plugins/validation_helpers.rb +6 -2
  45. data/lib/sequel/version.rb +1 -1
  46. metadata +18 -3
@@ -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
@@ -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?
@@ -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 = 40
9
+ MINOR = 45
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.40.0
4
+ version: 5.45.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: 2021-01-01 00:00:00.000000000 Z
11
+ date: 2021-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -184,6 +184,11 @@ extra_rdoc_files:
184
184
  - doc/release_notes/5.39.0.txt
185
185
  - doc/release_notes/5.4.0.txt
186
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.44.0.txt
191
+ - doc/release_notes/5.45.0.txt
187
192
  - doc/release_notes/5.5.0.txt
188
193
  - doc/release_notes/5.6.0.txt
189
194
  - doc/release_notes/5.7.0.txt
@@ -252,6 +257,11 @@ files:
252
257
  - doc/release_notes/5.39.0.txt
253
258
  - doc/release_notes/5.4.0.txt
254
259
  - doc/release_notes/5.40.0.txt
260
+ - doc/release_notes/5.41.0.txt
261
+ - doc/release_notes/5.42.0.txt
262
+ - doc/release_notes/5.43.0.txt
263
+ - doc/release_notes/5.44.0.txt
264
+ - doc/release_notes/5.45.0.txt
255
265
  - doc/release_notes/5.5.0.txt
256
266
  - doc/release_notes/5.6.0.txt
257
267
  - doc/release_notes/5.7.0.txt
@@ -350,6 +360,7 @@ files:
350
360
  - lib/sequel/extensions/_pretty_table.rb
351
361
  - lib/sequel/extensions/any_not_empty.rb
352
362
  - lib/sequel/extensions/arbitrary_servers.rb
363
+ - lib/sequel/extensions/async_thread_pool.rb
353
364
  - lib/sequel/extensions/auto_literal_strings.rb
354
365
  - lib/sequel/extensions/blank.rb
355
366
  - lib/sequel/extensions/caller_logging.rb
@@ -445,7 +456,9 @@ files:
445
456
  - lib/sequel/plugins/association_multi_add_remove.rb
446
457
  - lib/sequel/plugins/association_pks.rb
447
458
  - lib/sequel/plugins/association_proxies.rb
459
+ - lib/sequel/plugins/async_thread_pool.rb
448
460
  - lib/sequel/plugins/auto_validations.rb
461
+ - lib/sequel/plugins/auto_validations_constraint_validations_presence_message.rb
449
462
  - lib/sequel/plugins/before_after_save.rb
450
463
  - lib/sequel/plugins/blacklist_security.rb
451
464
  - lib/sequel/plugins/boolean_readers.rb
@@ -453,9 +466,11 @@ files:
453
466
  - lib/sequel/plugins/caching.rb
454
467
  - lib/sequel/plugins/class_table_inheritance.rb
455
468
  - lib/sequel/plugins/column_conflicts.rb
469
+ - lib/sequel/plugins/column_encryption.rb
456
470
  - lib/sequel/plugins/column_select.rb
457
471
  - lib/sequel/plugins/columns_updated.rb
458
472
  - lib/sequel/plugins/composition.rb
473
+ - lib/sequel/plugins/concurrent_eager_loading.rb
459
474
  - lib/sequel/plugins/constraint_validations.rb
460
475
  - lib/sequel/plugins/csv_serializer.rb
461
476
  - lib/sequel/plugins/dataset_associations.rb
@@ -557,7 +572,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
557
572
  - !ruby/object:Gem::Version
558
573
  version: '0'
559
574
  requirements: []
560
- rubygems_version: 3.2.3
575
+ rubygems_version: 3.2.15
561
576
  signing_key:
562
577
  specification_version: 4
563
578
  summary: The Database Toolkit for Ruby