sequel 5.39.0 → 5.44.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +52 -0
  3. data/MIT-LICENSE +1 -1
  4. data/doc/release_notes/5.40.0.txt +40 -0
  5. data/doc/release_notes/5.41.0.txt +25 -0
  6. data/doc/release_notes/5.42.0.txt +136 -0
  7. data/doc/release_notes/5.43.0.txt +98 -0
  8. data/doc/release_notes/5.44.0.txt +32 -0
  9. data/doc/sql.rdoc +1 -1
  10. data/doc/testing.rdoc +3 -0
  11. data/lib/sequel/adapters/ado.rb +16 -16
  12. data/lib/sequel/adapters/jdbc.rb +2 -2
  13. data/lib/sequel/adapters/shared/postgres.rb +4 -2
  14. data/lib/sequel/adapters/shared/sqlite.rb +37 -3
  15. data/lib/sequel/core.rb +11 -0
  16. data/lib/sequel/database/misc.rb +1 -2
  17. data/lib/sequel/database/schema_generator.rb +35 -47
  18. data/lib/sequel/database/schema_methods.rb +4 -0
  19. data/lib/sequel/dataset/features.rb +10 -0
  20. data/lib/sequel/dataset/prepared_statements.rb +2 -0
  21. data/lib/sequel/dataset/sql.rb +32 -10
  22. data/lib/sequel/extensions/async_thread_pool.rb +438 -0
  23. data/lib/sequel/extensions/blank.rb +8 -0
  24. data/lib/sequel/extensions/date_arithmetic.rb +36 -24
  25. data/lib/sequel/extensions/eval_inspect.rb +2 -0
  26. data/lib/sequel/extensions/inflector.rb +8 -0
  27. data/lib/sequel/extensions/migration.rb +2 -0
  28. data/lib/sequel/extensions/named_timezones.rb +5 -1
  29. data/lib/sequel/extensions/pg_array.rb +1 -0
  30. data/lib/sequel/extensions/pg_enum.rb +1 -1
  31. data/lib/sequel/extensions/pg_interval.rb +34 -8
  32. data/lib/sequel/extensions/pg_row.rb +1 -0
  33. data/lib/sequel/extensions/query.rb +2 -0
  34. data/lib/sequel/model/associations.rb +68 -13
  35. data/lib/sequel/model/base.rb +23 -6
  36. data/lib/sequel/model/plugins.rb +5 -0
  37. data/lib/sequel/plugins/association_proxies.rb +2 -0
  38. data/lib/sequel/plugins/async_thread_pool.rb +39 -0
  39. data/lib/sequel/plugins/auto_validations.rb +15 -1
  40. data/lib/sequel/plugins/column_encryption.rb +728 -0
  41. data/lib/sequel/plugins/composition.rb +7 -2
  42. data/lib/sequel/plugins/concurrent_eager_loading.rb +174 -0
  43. data/lib/sequel/plugins/constraint_validations.rb +2 -1
  44. data/lib/sequel/plugins/dataset_associations.rb +4 -1
  45. data/lib/sequel/plugins/json_serializer.rb +37 -22
  46. data/lib/sequel/plugins/nested_attributes.rb +8 -3
  47. data/lib/sequel/plugins/pg_array_associations.rb +10 -4
  48. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +2 -0
  49. data/lib/sequel/plugins/rcte_tree.rb +27 -19
  50. data/lib/sequel/plugins/serialization.rb +8 -3
  51. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  52. data/lib/sequel/plugins/validation_helpers.rb +6 -2
  53. data/lib/sequel/version.rb +1 -1
  54. metadata +36 -22
@@ -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
@@ -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 = 39
9
+ MINOR = 44
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.39.0
4
+ version: 5.44.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-12-01 00:00:00.000000000 Z
11
+ date: 2021-05-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,37 +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/fork_safety.rdoc
151
- - doc/release_notes/5.5.0.txt
152
- - doc/release_notes/5.6.0.txt
149
+ - doc/validations.rdoc
150
+ - doc/virtual_rows.rdoc
153
151
  - doc/release_notes/5.0.0.txt
154
152
  - doc/release_notes/5.1.0.txt
155
- - doc/release_notes/5.2.0.txt
156
- - doc/release_notes/5.3.0.txt
157
- - doc/release_notes/5.4.0.txt
158
- - doc/release_notes/5.8.0.txt
159
- - doc/release_notes/5.7.0.txt
160
- - doc/release_notes/5.9.0.txt
161
153
  - doc/release_notes/5.10.0.txt
162
154
  - doc/release_notes/5.11.0.txt
163
155
  - doc/release_notes/5.12.0.txt
@@ -168,6 +160,7 @@ extra_rdoc_files:
168
160
  - doc/release_notes/5.17.0.txt
169
161
  - doc/release_notes/5.18.0.txt
170
162
  - doc/release_notes/5.19.0.txt
163
+ - doc/release_notes/5.2.0.txt
171
164
  - doc/release_notes/5.20.0.txt
172
165
  - doc/release_notes/5.21.0.txt
173
166
  - doc/release_notes/5.22.0.txt
@@ -178,6 +171,7 @@ extra_rdoc_files:
178
171
  - doc/release_notes/5.27.0.txt
179
172
  - doc/release_notes/5.28.0.txt
180
173
  - doc/release_notes/5.29.0.txt
174
+ - doc/release_notes/5.3.0.txt
181
175
  - doc/release_notes/5.30.0.txt
182
176
  - doc/release_notes/5.31.0.txt
183
177
  - doc/release_notes/5.32.0.txt
@@ -188,6 +182,17 @@ extra_rdoc_files:
188
182
  - doc/release_notes/5.37.0.txt
189
183
  - doc/release_notes/5.38.0.txt
190
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.44.0.txt
191
+ - doc/release_notes/5.5.0.txt
192
+ - doc/release_notes/5.6.0.txt
193
+ - doc/release_notes/5.7.0.txt
194
+ - doc/release_notes/5.8.0.txt
195
+ - doc/release_notes/5.9.0.txt
191
196
  files:
192
197
  - CHANGELOG
193
198
  - MIT-LICENSE
@@ -250,6 +255,11 @@ files:
250
255
  - doc/release_notes/5.38.0.txt
251
256
  - doc/release_notes/5.39.0.txt
252
257
  - doc/release_notes/5.4.0.txt
258
+ - doc/release_notes/5.40.0.txt
259
+ - doc/release_notes/5.41.0.txt
260
+ - doc/release_notes/5.42.0.txt
261
+ - doc/release_notes/5.43.0.txt
262
+ - doc/release_notes/5.44.0.txt
253
263
  - doc/release_notes/5.5.0.txt
254
264
  - doc/release_notes/5.6.0.txt
255
265
  - doc/release_notes/5.7.0.txt
@@ -348,6 +358,7 @@ files:
348
358
  - lib/sequel/extensions/_pretty_table.rb
349
359
  - lib/sequel/extensions/any_not_empty.rb
350
360
  - lib/sequel/extensions/arbitrary_servers.rb
361
+ - lib/sequel/extensions/async_thread_pool.rb
351
362
  - lib/sequel/extensions/auto_literal_strings.rb
352
363
  - lib/sequel/extensions/blank.rb
353
364
  - lib/sequel/extensions/caller_logging.rb
@@ -443,6 +454,7 @@ files:
443
454
  - lib/sequel/plugins/association_multi_add_remove.rb
444
455
  - lib/sequel/plugins/association_pks.rb
445
456
  - lib/sequel/plugins/association_proxies.rb
457
+ - lib/sequel/plugins/async_thread_pool.rb
446
458
  - lib/sequel/plugins/auto_validations.rb
447
459
  - lib/sequel/plugins/before_after_save.rb
448
460
  - lib/sequel/plugins/blacklist_security.rb
@@ -451,9 +463,11 @@ files:
451
463
  - lib/sequel/plugins/caching.rb
452
464
  - lib/sequel/plugins/class_table_inheritance.rb
453
465
  - lib/sequel/plugins/column_conflicts.rb
466
+ - lib/sequel/plugins/column_encryption.rb
454
467
  - lib/sequel/plugins/column_select.rb
455
468
  - lib/sequel/plugins/columns_updated.rb
456
469
  - lib/sequel/plugins/composition.rb
470
+ - lib/sequel/plugins/concurrent_eager_loading.rb
457
471
  - lib/sequel/plugins/constraint_validations.rb
458
472
  - lib/sequel/plugins/csv_serializer.rb
459
473
  - lib/sequel/plugins/dataset_associations.rb
@@ -555,7 +569,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
555
569
  - !ruby/object:Gem::Version
556
570
  version: '0'
557
571
  requirements: []
558
- rubygems_version: 3.1.4
572
+ rubygems_version: 3.2.15
559
573
  signing_key:
560
574
  specification_version: 4
561
575
  summary: The Database Toolkit for Ruby