sequel 5.68.0 → 5.77.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +134 -0
- data/README.rdoc +3 -3
- data/doc/mass_assignment.rdoc +1 -1
- data/doc/migration.rdoc +15 -0
- data/doc/opening_databases.rdoc +12 -3
- data/doc/release_notes/5.69.0.txt +26 -0
- data/doc/release_notes/5.70.0.txt +35 -0
- data/doc/release_notes/5.71.0.txt +21 -0
- data/doc/release_notes/5.72.0.txt +33 -0
- data/doc/release_notes/5.73.0.txt +66 -0
- data/doc/release_notes/5.74.0.txt +45 -0
- data/doc/release_notes/5.75.0.txt +35 -0
- data/doc/release_notes/5.76.0.txt +86 -0
- data/doc/release_notes/5.77.0.txt +63 -0
- data/doc/sharding.rdoc +3 -1
- data/doc/testing.rdoc +4 -2
- data/lib/sequel/adapters/ibmdb.rb +1 -1
- data/lib/sequel/adapters/jdbc/h2.rb +3 -0
- data/lib/sequel/adapters/jdbc/hsqldb.rb +2 -0
- data/lib/sequel/adapters/jdbc/postgresql.rb +3 -0
- data/lib/sequel/adapters/jdbc/sqlanywhere.rb +15 -0
- data/lib/sequel/adapters/jdbc/sqlserver.rb +4 -0
- data/lib/sequel/adapters/jdbc.rb +10 -6
- data/lib/sequel/adapters/mysql.rb +19 -7
- data/lib/sequel/adapters/mysql2.rb +2 -2
- data/lib/sequel/adapters/odbc/mssql.rb +1 -1
- data/lib/sequel/adapters/postgres.rb +6 -5
- data/lib/sequel/adapters/shared/db2.rb +12 -0
- data/lib/sequel/adapters/shared/mssql.rb +1 -1
- data/lib/sequel/adapters/shared/mysql.rb +31 -1
- data/lib/sequel/adapters/shared/oracle.rb +4 -6
- data/lib/sequel/adapters/shared/postgres.rb +79 -4
- data/lib/sequel/adapters/shared/sqlanywhere.rb +10 -4
- data/lib/sequel/adapters/shared/sqlite.rb +20 -3
- data/lib/sequel/adapters/sqlite.rb +42 -3
- data/lib/sequel/adapters/trilogy.rb +117 -0
- data/lib/sequel/connection_pool/sharded_threaded.rb +11 -10
- data/lib/sequel/connection_pool/sharded_timed_queue.rb +374 -0
- data/lib/sequel/connection_pool/threaded.rb +6 -0
- data/lib/sequel/connection_pool/timed_queue.rb +16 -3
- data/lib/sequel/connection_pool.rb +10 -1
- data/lib/sequel/database/connecting.rb +1 -1
- data/lib/sequel/database/misc.rb +2 -2
- data/lib/sequel/database/schema_methods.rb +9 -2
- data/lib/sequel/database/transactions.rb +6 -0
- data/lib/sequel/dataset/actions.rb +8 -6
- data/lib/sequel/dataset/features.rb +10 -1
- data/lib/sequel/dataset/sql.rb +47 -34
- data/lib/sequel/extensions/any_not_empty.rb +2 -2
- data/lib/sequel/extensions/async_thread_pool.rb +3 -2
- data/lib/sequel/extensions/auto_cast_date_and_time.rb +94 -0
- data/lib/sequel/extensions/connection_expiration.rb +15 -9
- data/lib/sequel/extensions/connection_validator.rb +15 -10
- data/lib/sequel/extensions/duplicate_columns_handler.rb +10 -9
- data/lib/sequel/extensions/index_caching.rb +5 -1
- data/lib/sequel/extensions/migration.rb +52 -13
- data/lib/sequel/extensions/named_timezones.rb +1 -1
- data/lib/sequel/extensions/pg_array.rb +10 -0
- data/lib/sequel/extensions/pg_auto_parameterize_in_array.rb +110 -0
- data/lib/sequel/extensions/pg_extended_date_support.rb +4 -4
- data/lib/sequel/extensions/pg_json_ops.rb +52 -0
- data/lib/sequel/extensions/pg_range.rb +2 -2
- data/lib/sequel/extensions/pg_timestamptz.rb +27 -3
- data/lib/sequel/extensions/round_timestamps.rb +1 -1
- data/lib/sequel/extensions/schema_caching.rb +1 -1
- data/lib/sequel/extensions/server_block.rb +2 -1
- data/lib/sequel/extensions/transaction_connection_validator.rb +78 -0
- data/lib/sequel/model/associations.rb +9 -2
- data/lib/sequel/model/base.rb +25 -12
- data/lib/sequel/model/dataset_module.rb +3 -0
- data/lib/sequel/model/exceptions.rb +15 -3
- data/lib/sequel/plugins/column_encryption.rb +27 -6
- data/lib/sequel/plugins/defaults_setter.rb +16 -0
- data/lib/sequel/plugins/list.rb +5 -2
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -38
- data/lib/sequel/plugins/optimistic_locking.rb +9 -42
- data/lib/sequel/plugins/optimistic_locking_base.rb +55 -0
- data/lib/sequel/plugins/paged_operations.rb +181 -0
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +5 -1
- data/lib/sequel/plugins/pg_xmin_optimistic_locking.rb +109 -0
- data/lib/sequel/plugins/rcte_tree.rb +7 -4
- data/lib/sequel/plugins/static_cache.rb +38 -0
- data/lib/sequel/plugins/static_cache_cache.rb +5 -1
- data/lib/sequel/plugins/validation_helpers.rb +1 -1
- data/lib/sequel/version.rb +1 -1
- metadata +43 -3
@@ -71,6 +71,8 @@ module Sequel
|
|
71
71
|
# (default: :t)
|
72
72
|
# :level_alias :: The symbol identifier to use when eagerly loading descendants
|
73
73
|
# up to a given level (default: :x_level_x)
|
74
|
+
# :union_all :: Whether to use UNION ALL or UNION with the recursive
|
75
|
+
# common table expression (default: true)
|
74
76
|
module RcteTree
|
75
77
|
# Create the appropriate parent, children, ancestors, and descendants
|
76
78
|
# associations for the model.
|
@@ -80,6 +82,7 @@ module Sequel
|
|
80
82
|
opts = opts.dup
|
81
83
|
opts[:class] = model
|
82
84
|
opts[:methods_module] = Module.new
|
85
|
+
opts[:union_all] = opts[:union_all].nil? ? true : opts[:union_all]
|
83
86
|
model.send(:include, opts[:methods_module])
|
84
87
|
|
85
88
|
key = opts[:key] ||= :parent_id
|
@@ -142,7 +145,7 @@ module Sequel
|
|
142
145
|
model.from(SQL::AliasedExpression.new(t, table_alias)).
|
143
146
|
with_recursive(t, col_aliases ? base_ds.select(*col_aliases) : base_ds.select_all,
|
144
147
|
recursive_ds.select(*c_all),
|
145
|
-
:args=>col_aliases)
|
148
|
+
:args=>col_aliases, union_all: opts[:union_all])
|
146
149
|
end
|
147
150
|
aal = Array(a[:after_load])
|
148
151
|
aal << proc do |m, ancs|
|
@@ -191,7 +194,7 @@ module Sequel
|
|
191
194
|
table_alias = model.dataset.schema_and_table(model.table_name)[1].to_sym
|
192
195
|
ds = model.from(SQL::AliasedExpression.new(t, table_alias)).
|
193
196
|
with_recursive(t, base_case, recursive_case,
|
194
|
-
:args=>((key_aliases + col_aliases) if col_aliases))
|
197
|
+
:args=>((key_aliases + col_aliases) if col_aliases), union_all: opts[:union_all])
|
195
198
|
ds = r.apply_eager_dataset_changes(ds)
|
196
199
|
ds = ds.select_append(ka) unless ds.opts[:select] == nil
|
197
200
|
model.eager_load_results(r, eo.merge(:loader=>false, :initialize_rows=>false, :dataset=>ds, :id_map=>nil)) do |obj|
|
@@ -240,7 +243,7 @@ module Sequel
|
|
240
243
|
model.from(SQL::AliasedExpression.new(t, table_alias)).
|
241
244
|
with_recursive(t, col_aliases ? base_ds.select(*col_aliases) : base_ds.select_all,
|
242
245
|
recursive_ds.select(*c_all),
|
243
|
-
:args=>col_aliases)
|
246
|
+
:args=>col_aliases, union_all: opts[:union_all])
|
244
247
|
end
|
245
248
|
dal = Array(d[:after_load])
|
246
249
|
dal << proc do |m, descs|
|
@@ -299,7 +302,7 @@ module Sequel
|
|
299
302
|
table_alias = model.dataset.schema_and_table(model.table_name)[1].to_sym
|
300
303
|
ds = model.from(SQL::AliasedExpression.new(t, table_alias)).
|
301
304
|
with_recursive(t, base_case, recursive_case,
|
302
|
-
:args=>((key_aliases + col_aliases + (level ? [la] : [])) if col_aliases))
|
305
|
+
:args=>((key_aliases + col_aliases + (level ? [la] : [])) if col_aliases), union_all: opts[:union_all])
|
303
306
|
ds = r.apply_eager_dataset_changes(ds)
|
304
307
|
ds = ds.select_append(ka) unless ds.opts[:select] == nil
|
305
308
|
model.eager_load_results(r, eo.merge(:loader=>false, :initialize_rows=>false, :dataset=>ds, :id_map=>nil, :associations=>OPTS)) do |obj|
|
@@ -64,6 +64,9 @@ module Sequel
|
|
64
64
|
def self.configure(model, opts=OPTS)
|
65
65
|
model.instance_exec do
|
66
66
|
@static_cache_frozen = opts.fetch(:frozen, true)
|
67
|
+
if @static_cache_frozen && defined?(::Sequel::Plugins::ForbidLazyLoad::ClassMethods) && is_a?(::Sequel::Plugins::ForbidLazyLoad::ClassMethods)
|
68
|
+
extend ForbidLazyLoadClassMethods
|
69
|
+
end
|
67
70
|
load_cache
|
68
71
|
end
|
69
72
|
end
|
@@ -246,6 +249,41 @@ module Sequel
|
|
246
249
|
end
|
247
250
|
end
|
248
251
|
|
252
|
+
module ForbidLazyLoadClassMethods
|
253
|
+
# Do not forbid lazy loading for single object retrieval.
|
254
|
+
def cache_get_pk(pk)
|
255
|
+
primary_key_lookup(pk)
|
256
|
+
end
|
257
|
+
|
258
|
+
# Use static cache to return first arguments.
|
259
|
+
def first(*args)
|
260
|
+
if !defined?(yield) && args.empty?
|
261
|
+
if o = @all.first
|
262
|
+
_static_cache_frozen_copy(o)
|
263
|
+
end
|
264
|
+
else
|
265
|
+
super
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
private
|
270
|
+
|
271
|
+
# Return a frozen copy of the object that does not have lazy loading
|
272
|
+
# forbidden.
|
273
|
+
def _static_cache_frozen_copy(o)
|
274
|
+
o = call(Hash[o.values])
|
275
|
+
o.errors.freeze
|
276
|
+
o.freeze
|
277
|
+
end
|
278
|
+
|
279
|
+
# Do not forbid lazy loading for single object retrieval.
|
280
|
+
def primary_key_lookup(pk)
|
281
|
+
if o = cache[pk]
|
282
|
+
_static_cache_frozen_copy(o)
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
249
287
|
module InstanceMethods
|
250
288
|
# Disallowing destroying the object unless the frozen: false option was used.
|
251
289
|
def before_destroy
|
@@ -26,7 +26,11 @@ module Sequel
|
|
26
26
|
module ClassMethods
|
27
27
|
# Dump the in-memory cached rows to the cache file.
|
28
28
|
def dump_static_cache_cache
|
29
|
-
|
29
|
+
static_cache_cache = {}
|
30
|
+
@static_cache_cache.sort.each do |k, v|
|
31
|
+
static_cache_cache[k] = v
|
32
|
+
end
|
33
|
+
File.open(@static_cache_cache_file, 'wb'){|f| f.write(Marshal.dump(static_cache_cache))}
|
30
34
|
nil
|
31
35
|
end
|
32
36
|
|
data/lib/sequel/version.rb
CHANGED
@@ -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 =
|
9
|
+
MINOR = 77
|
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,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.77.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:
|
11
|
+
date: 2024-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bigdecimal
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: minitest
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,7 +214,16 @@ extra_rdoc_files:
|
|
200
214
|
- doc/release_notes/5.66.0.txt
|
201
215
|
- doc/release_notes/5.67.0.txt
|
202
216
|
- doc/release_notes/5.68.0.txt
|
217
|
+
- doc/release_notes/5.69.0.txt
|
203
218
|
- doc/release_notes/5.7.0.txt
|
219
|
+
- doc/release_notes/5.70.0.txt
|
220
|
+
- doc/release_notes/5.71.0.txt
|
221
|
+
- doc/release_notes/5.72.0.txt
|
222
|
+
- doc/release_notes/5.73.0.txt
|
223
|
+
- doc/release_notes/5.74.0.txt
|
224
|
+
- doc/release_notes/5.75.0.txt
|
225
|
+
- doc/release_notes/5.76.0.txt
|
226
|
+
- doc/release_notes/5.77.0.txt
|
204
227
|
- doc/release_notes/5.8.0.txt
|
205
228
|
- doc/release_notes/5.9.0.txt
|
206
229
|
files:
|
@@ -296,7 +319,16 @@ files:
|
|
296
319
|
- doc/release_notes/5.66.0.txt
|
297
320
|
- doc/release_notes/5.67.0.txt
|
298
321
|
- doc/release_notes/5.68.0.txt
|
322
|
+
- doc/release_notes/5.69.0.txt
|
299
323
|
- doc/release_notes/5.7.0.txt
|
324
|
+
- doc/release_notes/5.70.0.txt
|
325
|
+
- doc/release_notes/5.71.0.txt
|
326
|
+
- doc/release_notes/5.72.0.txt
|
327
|
+
- doc/release_notes/5.73.0.txt
|
328
|
+
- doc/release_notes/5.74.0.txt
|
329
|
+
- doc/release_notes/5.75.0.txt
|
330
|
+
- doc/release_notes/5.76.0.txt
|
331
|
+
- doc/release_notes/5.77.0.txt
|
300
332
|
- doc/release_notes/5.8.0.txt
|
301
333
|
- doc/release_notes/5.9.0.txt
|
302
334
|
- doc/schema_modification.rdoc
|
@@ -349,6 +381,7 @@ files:
|
|
349
381
|
- lib/sequel/adapters/sqlanywhere.rb
|
350
382
|
- lib/sequel/adapters/sqlite.rb
|
351
383
|
- lib/sequel/adapters/tinytds.rb
|
384
|
+
- lib/sequel/adapters/trilogy.rb
|
352
385
|
- lib/sequel/adapters/utils/columns_limit_1.rb
|
353
386
|
- lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb
|
354
387
|
- lib/sequel/adapters/utils/emulate_offset_with_row_number.rb
|
@@ -362,6 +395,7 @@ files:
|
|
362
395
|
- lib/sequel/connection_pool.rb
|
363
396
|
- lib/sequel/connection_pool/sharded_single.rb
|
364
397
|
- lib/sequel/connection_pool/sharded_threaded.rb
|
398
|
+
- lib/sequel/connection_pool/sharded_timed_queue.rb
|
365
399
|
- lib/sequel/connection_pool/single.rb
|
366
400
|
- lib/sequel/connection_pool/threaded.rb
|
367
401
|
- lib/sequel/connection_pool/timed_queue.rb
|
@@ -396,6 +430,7 @@ files:
|
|
396
430
|
- lib/sequel/extensions/any_not_empty.rb
|
397
431
|
- lib/sequel/extensions/arbitrary_servers.rb
|
398
432
|
- lib/sequel/extensions/async_thread_pool.rb
|
433
|
+
- lib/sequel/extensions/auto_cast_date_and_time.rb
|
399
434
|
- lib/sequel/extensions/auto_literal_strings.rb
|
400
435
|
- lib/sequel/extensions/blank.rb
|
401
436
|
- lib/sequel/extensions/caller_logging.rb
|
@@ -437,6 +472,7 @@ files:
|
|
437
472
|
- lib/sequel/extensions/pg_array.rb
|
438
473
|
- lib/sequel/extensions/pg_array_ops.rb
|
439
474
|
- lib/sequel/extensions/pg_auto_parameterize.rb
|
475
|
+
- lib/sequel/extensions/pg_auto_parameterize_in_array.rb
|
440
476
|
- lib/sequel/extensions/pg_enum.rb
|
441
477
|
- lib/sequel/extensions/pg_extended_date_support.rb
|
442
478
|
- lib/sequel/extensions/pg_extended_integer_support.rb
|
@@ -481,6 +517,7 @@ files:
|
|
481
517
|
- lib/sequel/extensions/synchronize_sql.rb
|
482
518
|
- lib/sequel/extensions/thread_local_timezones.rb
|
483
519
|
- lib/sequel/extensions/to_dot.rb
|
520
|
+
- lib/sequel/extensions/transaction_connection_validator.rb
|
484
521
|
- lib/sequel/extensions/virtual_row_method_block.rb
|
485
522
|
- lib/sequel/model.rb
|
486
523
|
- lib/sequel/model/associations.rb
|
@@ -546,9 +583,12 @@ files:
|
|
546
583
|
- lib/sequel/plugins/mssql_optimistic_locking.rb
|
547
584
|
- lib/sequel/plugins/nested_attributes.rb
|
548
585
|
- lib/sequel/plugins/optimistic_locking.rb
|
586
|
+
- lib/sequel/plugins/optimistic_locking_base.rb
|
587
|
+
- lib/sequel/plugins/paged_operations.rb
|
549
588
|
- lib/sequel/plugins/pg_array_associations.rb
|
550
589
|
- lib/sequel/plugins/pg_auto_constraint_validations.rb
|
551
590
|
- lib/sequel/plugins/pg_row.rb
|
591
|
+
- lib/sequel/plugins/pg_xmin_optimistic_locking.rb
|
552
592
|
- lib/sequel/plugins/prepared_statements.rb
|
553
593
|
- lib/sequel/plugins/prepared_statements_safe.rb
|
554
594
|
- lib/sequel/plugins/primary_key_lookup_check_values.rb
|
@@ -622,7 +662,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
622
662
|
- !ruby/object:Gem::Version
|
623
663
|
version: '0'
|
624
664
|
requirements: []
|
625
|
-
rubygems_version: 3.
|
665
|
+
rubygems_version: 3.5.3
|
626
666
|
signing_key:
|
627
667
|
specification_version: 4
|
628
668
|
summary: The Database Toolkit for Ruby
|