sequel 5.40.0 → 5.45.0

Sign up to get free protection for your applications and to get access to all the features.
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