sequel 5.30.0 → 5.35.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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +86 -0
  3. data/README.rdoc +1 -1
  4. data/doc/advanced_associations.rdoc +4 -4
  5. data/doc/association_basics.rdoc +10 -5
  6. data/doc/code_order.rdoc +12 -2
  7. data/doc/dataset_filtering.rdoc +2 -2
  8. data/doc/model_dataset_method_design.rdoc +1 -1
  9. data/doc/postgresql.rdoc +71 -0
  10. data/doc/release_notes/5.31.0.txt +148 -0
  11. data/doc/release_notes/5.32.0.txt +46 -0
  12. data/doc/release_notes/5.33.0.txt +24 -0
  13. data/doc/release_notes/5.34.0.txt +40 -0
  14. data/doc/release_notes/5.35.0.txt +56 -0
  15. data/doc/testing.rdoc +1 -1
  16. data/lib/sequel/adapters/oracle.rb +2 -1
  17. data/lib/sequel/adapters/shared/access.rb +6 -6
  18. data/lib/sequel/adapters/shared/mssql.rb +5 -5
  19. data/lib/sequel/adapters/shared/mysql.rb +9 -9
  20. data/lib/sequel/adapters/shared/oracle.rb +16 -16
  21. data/lib/sequel/adapters/shared/postgres.rb +169 -14
  22. data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
  23. data/lib/sequel/adapters/shared/sqlite.rb +33 -6
  24. data/lib/sequel/adapters/tinytds.rb +1 -0
  25. data/lib/sequel/connection_pool/sharded_single.rb +4 -1
  26. data/lib/sequel/connection_pool/sharded_threaded.rb +12 -12
  27. data/lib/sequel/connection_pool/single.rb +1 -1
  28. data/lib/sequel/connection_pool/threaded.rb +2 -2
  29. data/lib/sequel/core.rb +318 -314
  30. data/lib/sequel/database/connecting.rb +1 -1
  31. data/lib/sequel/database/misc.rb +16 -10
  32. data/lib/sequel/database/query.rb +3 -1
  33. data/lib/sequel/database/schema_generator.rb +0 -1
  34. data/lib/sequel/database/schema_methods.rb +15 -16
  35. data/lib/sequel/database/transactions.rb +7 -4
  36. data/lib/sequel/dataset/placeholder_literalizer.rb +3 -7
  37. data/lib/sequel/dataset/query.rb +5 -4
  38. data/lib/sequel/deprecated.rb +3 -1
  39. data/lib/sequel/exceptions.rb +2 -0
  40. data/lib/sequel/extensions/_pretty_table.rb +1 -2
  41. data/lib/sequel/extensions/columns_introspection.rb +1 -2
  42. data/lib/sequel/extensions/connection_expiration.rb +2 -2
  43. data/lib/sequel/extensions/connection_validator.rb +2 -2
  44. data/lib/sequel/extensions/core_refinements.rb +2 -0
  45. data/lib/sequel/extensions/duplicate_columns_handler.rb +2 -0
  46. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  47. data/lib/sequel/extensions/index_caching.rb +9 -7
  48. data/lib/sequel/extensions/integer64.rb +2 -0
  49. data/lib/sequel/extensions/migration.rb +1 -2
  50. data/lib/sequel/extensions/pg_array_ops.rb +4 -0
  51. data/lib/sequel/extensions/pg_enum.rb +7 -2
  52. data/lib/sequel/extensions/pg_extended_date_support.rb +1 -1
  53. data/lib/sequel/extensions/pg_hstore.rb +6 -0
  54. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -0
  55. data/lib/sequel/extensions/pg_inet.rb +15 -5
  56. data/lib/sequel/extensions/pg_interval.rb +2 -0
  57. data/lib/sequel/extensions/pg_json_ops.rb +2 -0
  58. data/lib/sequel/extensions/pg_range.rb +5 -7
  59. data/lib/sequel/extensions/pg_range_ops.rb +2 -0
  60. data/lib/sequel/extensions/pg_row.rb +0 -1
  61. data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
  62. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  63. data/lib/sequel/extensions/s.rb +2 -0
  64. data/lib/sequel/extensions/schema_dumper.rb +10 -4
  65. data/lib/sequel/extensions/server_block.rb +3 -3
  66. data/lib/sequel/extensions/symbol_aref_refinement.rb +2 -0
  67. data/lib/sequel/extensions/symbol_as_refinement.rb +2 -0
  68. data/lib/sequel/extensions/to_dot.rb +9 -3
  69. data/lib/sequel/model.rb +2 -0
  70. data/lib/sequel/model/associations.rb +54 -25
  71. data/lib/sequel/model/base.rb +70 -57
  72. data/lib/sequel/model/plugins.rb +3 -3
  73. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  74. data/lib/sequel/plugins/association_multi_add_remove.rb +2 -0
  75. data/lib/sequel/plugins/association_pks.rb +60 -18
  76. data/lib/sequel/plugins/association_proxies.rb +2 -0
  77. data/lib/sequel/plugins/blacklist_security.rb +1 -2
  78. data/lib/sequel/plugins/boolean_subsets.rb +4 -1
  79. data/lib/sequel/plugins/class_table_inheritance.rb +28 -28
  80. data/lib/sequel/plugins/csv_serializer.rb +2 -0
  81. data/lib/sequel/plugins/dirty.rb +13 -13
  82. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  83. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  84. data/lib/sequel/plugins/json_serializer.rb +3 -7
  85. data/lib/sequel/plugins/lazy_attributes.rb +1 -1
  86. data/lib/sequel/plugins/pg_array_associations.rb +2 -3
  87. data/lib/sequel/plugins/prepared_statements.rb +5 -11
  88. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -3
  89. data/lib/sequel/plugins/rcte_tree.rb +10 -16
  90. data/lib/sequel/plugins/single_table_inheritance.rb +15 -15
  91. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  92. data/lib/sequel/plugins/string_stripper.rb +1 -1
  93. data/lib/sequel/plugins/subclasses.rb +2 -0
  94. data/lib/sequel/plugins/validation_class_methods.rb +5 -1
  95. data/lib/sequel/timezones.rb +6 -4
  96. data/lib/sequel/version.rb +1 -1
  97. metadata +18 -2
@@ -106,17 +106,13 @@ module Sequel
106
106
  # and breaks some aspects of the json_serializer plugin. You can undo the damage
107
107
  # done by active_support/json by doing:
108
108
  #
109
- # class Array
110
- # def to_json(options = {})
111
- # JSON.generate(self)
112
- # end
113
- # end
114
- #
115
- # class Hash
109
+ # module ActiveSupportBrokenJSONFix
116
110
  # def to_json(options = {})
117
111
  # JSON.generate(self)
118
112
  # end
119
113
  # end
114
+ # Array.send(:prepend, ActiveSupportBrokenJSONFix)
115
+ # Hash.send(:prepend, ActiveSupportBrokenJSONFix)
120
116
  #
121
117
  # Note that this will probably cause active_support/json to no longer work
122
118
  # correctly in some cases.
@@ -98,7 +98,7 @@ module Sequel
98
98
  end
99
99
 
100
100
  if retrieved_with
101
- raise(Error, "Invalid primary key column for #{model}: #{pkc.inspect}") unless primary_key = model.primary_key
101
+ primary_key = model.primary_key
102
102
  composite_pk = true if primary_key.is_a?(Array)
103
103
  id_map = {}
104
104
  retrieved_with.each{|o| id_map[o.pk] = o unless o.values.has_key?(a) || o.frozen?}
@@ -341,10 +341,9 @@ module Sequel
341
341
  eo[:loader] = false
342
342
 
343
343
  eager_load_results(opts, eo) do |assoc_record|
344
- if pks ||= assoc_record.get_column_value(key)
344
+ if pks = assoc_record.get_column_value(key)
345
345
  pks.each do |pkv|
346
- next unless objects = id_map[pkv]
347
- objects.each do |object|
346
+ id_map[pkv].each do |object|
348
347
  object.associations[name].push(assoc_record)
349
348
  end
350
349
  end
@@ -41,11 +41,9 @@ module Sequel
41
41
  # Create a prepared statement, but modify the SQL used so that the model's columns are explicitly
42
42
  # selected instead of using *, assuming that the dataset selects from a single table.
43
43
  def prepare_explicit_statement(ds, type, vals=OPTS)
44
- f = ds.opts[:from]
45
- meth = type == :insert_select ? :returning : :select
46
- s = ds.opts[meth]
47
- if f && f.length == 1 && !ds.opts[:join] && (!s || s.empty?)
48
- ds = ds.public_send(meth, *columns.map{|c| Sequel.identifier(c)})
44
+ s = ds.opts[:returning]
45
+ if !s || s.empty?
46
+ ds = ds.returning(*columns.map{|c| Sequel.identifier(c)})
49
47
  end
50
48
 
51
49
  prepare_statement(ds, type, vals)
@@ -70,9 +68,7 @@ module Sequel
70
68
  # Return a prepared statement that can be used to insert a row using the given columns
71
69
  # and return that column values for the row created.
72
70
  def prepared_insert_select(cols)
73
- if dataset.supports_insert_select?
74
- cached_prepared_statement(:insert_select, prepared_columns(cols)){prepare_explicit_statement(naked.clone(:server=>dataset.opts.fetch(:server, :default)), :insert_select, prepared_statement_key_hash(cols))}
75
- end
71
+ cached_prepared_statement(:insert_select, prepared_columns(cols)){prepare_explicit_statement(naked.clone(:server=>dataset.opts.fetch(:server, :default)), :insert_select, prepared_statement_key_hash(cols))}
76
72
  end
77
73
 
78
74
  # Return an array of two element arrays with the column symbol as the first entry and the
@@ -138,9 +134,7 @@ module Sequel
138
134
  # and return the new column values.
139
135
  def _insert_select_raw(ds)
140
136
  if use_prepared_statements_for?(:insert_select)
141
- if ps = model.send(:prepared_insert_select, @values.keys)
142
- _set_prepared_statement_server(ps).call(@values)
143
- end
137
+ _set_prepared_statement_server(model.send(:prepared_insert_select, @values.keys)).call(@values)
144
138
  else
145
139
  super
146
140
  end
@@ -66,9 +66,7 @@ module Sequel
66
66
  # Merge the current values into the default values to reduce the number
67
67
  # of free columns.
68
68
  def before_create
69
- if v = model.prepared_statements_column_defaults
70
- @values = v.merge(values)
71
- end
69
+ @values = model.prepared_statements_column_defaults.merge(@values)
72
70
  super
73
71
  end
74
72
 
@@ -192,23 +192,19 @@ module Sequel
192
192
  :args=>((key_aliases + col_aliases) if col_aliases))
193
193
  ds = r.apply_eager_dataset_changes(ds)
194
194
  ds = ds.select_append(ka) unless ds.opts[:select] == nil
195
- model.eager_load_results(r, eo.merge(:loader=>false, :initalize_rows=>false, :dataset=>ds, :id_map=>nil)) do |obj|
195
+ model.eager_load_results(r, eo.merge(:loader=>false, :initialize_rows=>false, :dataset=>ds, :id_map=>nil)) do |obj|
196
196
  opk = prkey_conv[obj]
197
- if parent_map.has_key?(opk)
198
- if idm_obj = parent_map[opk]
199
- key_aliases.each{|ka_| idm_obj.values[ka_] = obj.values[ka_]}
200
- obj = idm_obj
201
- end
197
+ if idm_obj = parent_map[opk]
198
+ key_aliases.each{|ka_| idm_obj.values[ka_] = obj.values[ka_]}
199
+ obj = idm_obj
202
200
  else
203
201
  obj.associations[parent] = nil
204
202
  parent_map[opk] = obj
205
203
  (children_map[key_conv[obj]] ||= []) << obj
206
204
  end
207
205
 
208
- if roots = id_map[extract_key_alias[obj]]
209
- roots.each do |root|
210
- root.associations[ancestors] << obj
211
- end
206
+ id_map[extract_key_alias[obj]].each do |root|
207
+ root.associations[ancestors] << obj
212
208
  end
213
209
  end
214
210
  parent_map.each do |parent_id, obj|
@@ -300,17 +296,15 @@ module Sequel
300
296
  :args=>((key_aliases + col_aliases + (level ? [la] : [])) if col_aliases))
301
297
  ds = r.apply_eager_dataset_changes(ds)
302
298
  ds = ds.select_append(ka) unless ds.opts[:select] == nil
303
- model.eager_load_results(r, eo.merge(:loader=>false, :initalize_rows=>false, :dataset=>ds, :id_map=>nil, :associations=>OPTS)) do |obj|
299
+ model.eager_load_results(r, eo.merge(:loader=>false, :initialize_rows=>false, :dataset=>ds, :id_map=>nil, :associations=>OPTS)) do |obj|
304
300
  if level
305
301
  no_cache = no_cache_level == obj.values.delete(la)
306
302
  end
307
303
 
308
304
  opk = prkey_conv[obj]
309
- if parent_map.has_key?(opk)
310
- if idm_obj = parent_map[opk]
311
- key_aliases.each{|ka_| idm_obj.values[ka_] = obj.values[ka_]}
312
- obj = idm_obj
313
- end
305
+ if idm_obj = parent_map[opk]
306
+ key_aliases.each{|ka_| idm_obj.values[ka_] = obj.values[ka_]}
307
+ obj = idm_obj
314
308
  else
315
309
  obj.associations[childrena] = [] unless no_cache
316
310
  parent_map[opk] = obj
@@ -163,21 +163,6 @@ module Sequel
163
163
  super
164
164
  end
165
165
 
166
- # Copy the necessary attributes to the subclasses, and filter the
167
- # subclass's dataset based on the sti_kep_map entry for the class.
168
- def inherited(subclass)
169
- super
170
- key = Array(sti_key_map[subclass]).dup
171
- sti_subclass_added(key)
172
- rp = dataset.row_proc
173
- subclass.set_dataset(sti_subclass_dataset(key), :inherited=>true)
174
- subclass.instance_exec do
175
- @dataset = @dataset.with_row_proc(rp)
176
- @sti_key_array = key
177
- self.simple_table = nil
178
- end
179
- end
180
-
181
166
  # Return an instance of the class specified by sti_key,
182
167
  # used by the row_proc.
183
168
  def sti_load(r)
@@ -208,6 +193,21 @@ module Sequel
208
193
  super
209
194
  end
210
195
 
196
+ # Copy the necessary attributes to the subclasses, and filter the
197
+ # subclass's dataset based on the sti_kep_map entry for the class.
198
+ def inherited(subclass)
199
+ super
200
+ key = Array(sti_key_map[subclass]).dup
201
+ sti_subclass_added(key)
202
+ rp = dataset.row_proc
203
+ subclass.set_dataset(sti_subclass_dataset(key), :inherited=>true)
204
+ subclass.instance_exec do
205
+ @dataset = @dataset.with_row_proc(rp)
206
+ @sti_key_array = key
207
+ self.simple_table = nil
208
+ end
209
+ end
210
+
211
211
  # If calling set_dataset manually, make sure to set the dataset
212
212
  # row proc to one that handles inheritance correctly.
213
213
  def set_dataset_row_proc(ds)
@@ -0,0 +1,108 @@
1
+ # frozen-string-literal: true
2
+
3
+ module Sequel
4
+ module Plugins
5
+ # The skip_saving_columms plugin allows skipping specific columns when
6
+ # saving. By default, it skips columns that the database schema
7
+ # indicates are generated columns:
8
+ #
9
+ # # Assume id column, name column, and id2 generated column
10
+ # album = Album[1]
11
+ # album.id # => 1
12
+ # album.name # => 'X'
13
+ # album.id2 # => 2
14
+ # album.save
15
+ # # UPDATE album SET name = 'X' WHERE (id = 1)
16
+ #
17
+ # You can override which columns will be skipped:
18
+ #
19
+ # Album.skip_saving_columns = [:name]
20
+ # album.save
21
+ # # UPDATE album SET id2 = 2 WHERE (id = 1)
22
+ #
23
+ # The skipping happens for all usage of Model#save and callers of it (e.g.
24
+ # Model.create, Model.update). When using the plugin, the only way to get
25
+ # it to save a column marked for skipping is to explicitly specify it:
26
+ #
27
+ # album.save(columns: [:name, :id2])
28
+ # album.save
29
+ # # UPDATE album SET name = 'X', id2 = 2 WHERE (id = 1)
30
+ #
31
+ # Usage:
32
+ #
33
+ # # Support skipping saving columns in all Sequel::Model subclasses
34
+ # # (called before loading subclasses)
35
+ # Sequel::Model.plugin :skip_saving_columns
36
+ #
37
+ # # Support skipping saving columns in the Album class
38
+ # Album.plugin :skip_saving_columns
39
+ module SkipSavingColumns
40
+ # Setup skipping of the generated columns for a model with an existing dataset.
41
+ def self.configure(mod)
42
+ mod.instance_exec do
43
+ set_skip_saving_generated_columns if @dataset
44
+ end
45
+ end
46
+
47
+ module ClassMethods
48
+ # An array of column symbols for columns to skip when saving.
49
+ attr_reader :skip_saving_columns
50
+
51
+ # Over the default array of columns to skip. Once overridden, future
52
+ # changes to the class's dataset and future subclasses will automatically
53
+ # use these overridden columns, instead of introspecting the database schema.
54
+ def skip_saving_columns=(v)
55
+ @_skip_saving_columns_no_override = true
56
+ @skip_saving_columns = v.dup.freeze
57
+ end
58
+
59
+ Plugins.after_set_dataset(self, :set_skip_saving_generated_columns)
60
+ Plugins.inherited_instance_variables(self, :@skip_saving_columns=>:dup, :@_skip_saving_columns_no_override=>nil)
61
+
62
+ private
63
+
64
+ # If the skip saving columns has not been overridden, check the database
65
+ # schema and automatically skip any generated columns.
66
+ def set_skip_saving_generated_columns
67
+ return if @_skip_saving_columns_no_override
68
+ s = []
69
+ db_schema.each do |k, v|
70
+ s << k if v[:generated]
71
+ end
72
+ @skip_saving_columns = s.freeze
73
+ nil
74
+ end
75
+ end
76
+
77
+ module InstanceMethods
78
+ private
79
+
80
+ # Skip the columns the model has marked to skip when inserting.
81
+ def _insert_values
82
+ _save_removed_skipped_columns(Hash[super])
83
+ end
84
+
85
+ # Skip the columns the model has marked to skip when updating
86
+ # all columns.
87
+ def _save_update_all_columns_hash
88
+ _save_removed_skipped_columns(super)
89
+ end
90
+
91
+ # Skip the columns the model has marked to skip when updating
92
+ # only changed columns.
93
+ def _save_update_changed_colums_hash
94
+ _save_removed_skipped_columns(super)
95
+ end
96
+
97
+ # Remove any columns the model has marked to skip when saving.
98
+ def _save_removed_skipped_columns(hash)
99
+ model.skip_saving_columns.each do |column|
100
+ hash.delete(column)
101
+ end
102
+
103
+ hash
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -28,7 +28,7 @@ module Sequel
28
28
  model.plugin(:input_transformer, :string_stripper){|v| (v.is_a?(String) && !v.is_a?(SQL::Blob)) ? v.strip : v}
29
29
  end
30
30
  def self.configure(model)
31
- model.instance_exec{set_skipped_string_stripping_columns if @dataset}
31
+ model.send(:set_skipped_string_stripping_columns)
32
32
  end
33
33
 
34
34
  module ClassMethods
@@ -63,6 +63,8 @@ module Sequel
63
63
 
64
64
  Plugins.inherited_instance_variables(self, :@subclasses=>lambda{|v| []}, :@on_subclass=>nil)
65
65
 
66
+ private
67
+
66
68
  # Add the subclass to this model's current subclasses,
67
69
  # and initialize a new subclasses instance variable
68
70
  # in the subclass.
@@ -194,7 +194,11 @@ module Sequel
194
194
  def validates_each(*atts, &block)
195
195
  opts = extract_options!(atts)
196
196
  blank_meth = db.method(:blank_object?).to_proc
197
- blk = if (i = opts[:if]) || (am = opts[:allow_missing]) || (an = opts[:allow_nil]) || (ab = opts[:allow_blank])
197
+ i = opts[:if]
198
+ am = opts[:allow_missing]
199
+ an = opts[:allow_nil]
200
+ ab = opts[:allow_blank]
201
+ blk = if i || am || an || ab
198
202
  if i.is_a?(Proc)
199
203
  i = Plugins.def_sequel_method(self, "validation_class_methods_if", 0, &i)
200
204
  end
@@ -4,6 +4,11 @@ module Sequel
4
4
  @application_timezone = nil
5
5
  @database_timezone = nil
6
6
  @typecast_timezone = nil
7
+ @local_offsets = {}
8
+
9
+ # Backwards compatible alias
10
+ Timezones = SequelMethods
11
+ Deprecation.deprecate_constant(self, :Timezones)
7
12
 
8
13
  # Sequel doesn't pay much attention to timezones by default, but you can set it
9
14
  # handle timezones if you want. There are three separate timezone settings, application_timezone,
@@ -16,7 +21,7 @@ module Sequel
16
21
  # on the environment (e.g. current user), you need to use the +named_timezones+ extension (and use
17
22
  # +DateTime+ as the +datetime_class+). Sequel also ships with a +thread_local_timezones+ extensions
18
23
  # which allows each thread to have its own timezone values for each of the timezones.
19
- module Timezones
24
+ module SequelMethods
20
25
  # The timezone you want the application to use. This is the timezone
21
26
  # that incoming times from the database and typecasting are converted to.
22
27
  attr_reader :application_timezone
@@ -243,7 +248,4 @@ module Sequel
243
248
  Sequel.synchronize{@local_offsets[offset_secs] = Rational(offset_secs, 86400)}
244
249
  end
245
250
  end
246
-
247
- @local_offsets = {}
248
- extend Timezones
249
251
  end
@@ -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 = 30
9
+ MINOR = 35
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.30.0
4
+ version: 5.35.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-03-01 00:00:00.000000000 Z
11
+ date: 2020-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -178,6 +178,11 @@ extra_rdoc_files:
178
178
  - doc/release_notes/5.28.0.txt
179
179
  - doc/release_notes/5.29.0.txt
180
180
  - doc/release_notes/5.30.0.txt
181
+ - doc/release_notes/5.31.0.txt
182
+ - doc/release_notes/5.32.0.txt
183
+ - doc/release_notes/5.33.0.txt
184
+ - doc/release_notes/5.34.0.txt
185
+ - doc/release_notes/5.35.0.txt
181
186
  files:
182
187
  - CHANGELOG
183
188
  - MIT-LICENSE
@@ -229,6 +234,11 @@ files:
229
234
  - doc/release_notes/5.29.0.txt
230
235
  - doc/release_notes/5.3.0.txt
231
236
  - doc/release_notes/5.30.0.txt
237
+ - doc/release_notes/5.31.0.txt
238
+ - doc/release_notes/5.32.0.txt
239
+ - doc/release_notes/5.33.0.txt
240
+ - doc/release_notes/5.34.0.txt
241
+ - doc/release_notes/5.35.0.txt
232
242
  - doc/release_notes/5.4.0.txt
233
243
  - doc/release_notes/5.5.0.txt
234
244
  - doc/release_notes/5.6.0.txt
@@ -348,6 +358,7 @@ files:
348
358
  - lib/sequel/extensions/escaped_like.rb
349
359
  - lib/sequel/extensions/eval_inspect.rb
350
360
  - lib/sequel/extensions/exclude_or_null.rb
361
+ - lib/sequel/extensions/fiber_concurrency.rb
351
362
  - lib/sequel/extensions/freeze_datasets.rb
352
363
  - lib/sequel/extensions/from_block.rb
353
364
  - lib/sequel/extensions/graph_each.rb
@@ -384,6 +395,7 @@ files:
384
395
  - lib/sequel/extensions/pretty_table.rb
385
396
  - lib/sequel/extensions/query.rb
386
397
  - lib/sequel/extensions/round_timestamps.rb
398
+ - lib/sequel/extensions/run_transaction_hooks.rb
387
399
  - lib/sequel/extensions/s.rb
388
400
  - lib/sequel/extensions/schema_caching.rb
389
401
  - lib/sequel/extensions/schema_dumper.rb
@@ -417,6 +429,7 @@ files:
417
429
  - lib/sequel/plugins/active_model.rb
418
430
  - lib/sequel/plugins/after_initialize.rb
419
431
  - lib/sequel/plugins/association_dependencies.rb
432
+ - lib/sequel/plugins/association_lazy_eager_option.rb
420
433
  - lib/sequel/plugins/association_multi_add_remove.rb
421
434
  - lib/sequel/plugins/association_pks.rb
422
435
  - lib/sequel/plugins/association_proxies.rb
@@ -443,6 +456,7 @@ files:
443
456
  - lib/sequel/plugins/empty_failure_backtraces.rb
444
457
  - lib/sequel/plugins/error_splitter.rb
445
458
  - lib/sequel/plugins/finder.rb
459
+ - lib/sequel/plugins/forbid_lazy_load.rb
446
460
  - lib/sequel/plugins/force_encoding.rb
447
461
  - lib/sequel/plugins/hook_class_methods.rb
448
462
  - lib/sequel/plugins/input_transformer.rb
@@ -450,6 +464,7 @@ files:
450
464
  - lib/sequel/plugins/insert_returning_select.rb
451
465
  - lib/sequel/plugins/instance_filters.rb
452
466
  - lib/sequel/plugins/instance_hooks.rb
467
+ - lib/sequel/plugins/instance_specific_default.rb
453
468
  - lib/sequel/plugins/inverted_subsets.rb
454
469
  - lib/sequel/plugins/json_serializer.rb
455
470
  - lib/sequel/plugins/lazy_attributes.rb
@@ -471,6 +486,7 @@ files:
471
486
  - lib/sequel/plugins/single_table_inheritance.rb
472
487
  - lib/sequel/plugins/singular_table_names.rb
473
488
  - lib/sequel/plugins/skip_create_refresh.rb
489
+ - lib/sequel/plugins/skip_saving_columns.rb
474
490
  - lib/sequel/plugins/split_values.rb
475
491
  - lib/sequel/plugins/static_cache.rb
476
492
  - lib/sequel/plugins/static_cache_cache.rb