sequel 4.39.0 → 4.40.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.
- checksums.yaml +4 -4
- data/CHANGELOG +34 -0
- data/README.rdoc +8 -4
- data/doc/active_record.rdoc +1 -1
- data/doc/advanced_associations.rdoc +7 -7
- data/doc/association_basics.rdoc +7 -7
- data/doc/cheat_sheet.rdoc +5 -3
- data/doc/core_extensions.rdoc +3 -3
- data/doc/dataset_filtering.rdoc +1 -1
- data/doc/object_model.rdoc +16 -7
- data/doc/postgresql.rdoc +3 -3
- data/doc/querying.rdoc +3 -3
- data/doc/release_notes/4.40.0.txt +179 -0
- data/doc/security.rdoc +2 -1
- data/doc/sql.rdoc +34 -18
- data/doc/testing.rdoc +1 -0
- data/doc/virtual_rows.rdoc +11 -2
- data/lib/sequel/adapters/jdbc/derby.rb +7 -1
- data/lib/sequel/adapters/jdbc/h2.rb +15 -1
- data/lib/sequel/adapters/oracle.rb +9 -5
- data/lib/sequel/adapters/postgres.rb +0 -1
- data/lib/sequel/adapters/shared/cubrid.rb +11 -11
- data/lib/sequel/adapters/shared/db2.rb +4 -8
- data/lib/sequel/adapters/shared/mssql.rb +41 -28
- data/lib/sequel/adapters/shared/mysql.rb +9 -6
- data/lib/sequel/adapters/shared/oracle.rb +16 -5
- data/lib/sequel/adapters/shared/postgres.rb +84 -45
- data/lib/sequel/adapters/shared/sqlanywhere.rb +29 -15
- data/lib/sequel/adapters/shared/sqlite.rb +6 -6
- data/lib/sequel/core.rb +61 -10
- data/lib/sequel/database/connecting.rb +2 -1
- data/lib/sequel/database/features.rb +7 -0
- data/lib/sequel/database/query.rb +1 -1
- data/lib/sequel/database/schema_methods.rb +30 -3
- data/lib/sequel/database/transactions.rb +4 -2
- data/lib/sequel/dataset/actions.rb +1 -1
- data/lib/sequel/dataset/graph.rb +6 -1
- data/lib/sequel/dataset/query.rb +14 -7
- data/lib/sequel/dataset/sql.rb +2 -2
- data/lib/sequel/extensions/core_extensions.rb +2 -1
- data/lib/sequel/extensions/pg_row.rb +2 -2
- data/lib/sequel/extensions/s.rb +57 -0
- data/lib/sequel/extensions/set_overrides.rb +5 -1
- data/lib/sequel/extensions/sql_expr.rb +1 -0
- data/lib/sequel/extensions/symbol_aref.rb +71 -0
- data/lib/sequel/extensions/symbol_aref_refinement.rb +41 -0
- data/lib/sequel/extensions/symbol_as.rb +23 -0
- data/lib/sequel/extensions/symbol_as_refinement.rb +35 -0
- data/lib/sequel/model/base.rb +3 -3
- data/lib/sequel/plugins/class_table_inheritance.rb +14 -3
- data/lib/sequel/plugins/column_select.rb +4 -2
- data/lib/sequel/plugins/dataset_associations.rb +12 -4
- data/lib/sequel/plugins/insert_returning_select.rb +1 -1
- data/lib/sequel/plugins/mssql_optimistic_locking.rb +1 -1
- data/lib/sequel/plugins/prepared_statements.rb +1 -0
- data/lib/sequel/sql.rb +40 -8
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/firebird_spec.rb +3 -3
- data/spec/adapters/mssql_spec.rb +40 -40
- data/spec/adapters/mysql_spec.rb +5 -5
- data/spec/adapters/oracle_spec.rb +4 -4
- data/spec/adapters/postgres_spec.rb +135 -124
- data/spec/adapters/spec_helper.rb +1 -0
- data/spec/adapters/sqlite_spec.rb +6 -6
- data/spec/core/dataset_spec.rb +2 -2
- data/spec/core/expression_filters_spec.rb +43 -2
- data/spec/core/schema_spec.rb +35 -1
- data/spec/core_extensions_spec.rb +27 -0
- data/spec/extensions/class_table_inheritance_spec.rb +8 -0
- data/spec/extensions/column_select_spec.rb +8 -0
- data/spec/extensions/core_refinements_spec.rb +1 -1
- data/spec/extensions/dataset_associations_spec.rb +9 -0
- data/spec/extensions/insert_returning_select_spec.rb +20 -0
- data/spec/extensions/prepared_statements_spec.rb +7 -0
- data/spec/extensions/s_spec.rb +60 -0
- data/spec/extensions/symbol_aref_refinement_spec.rb +28 -0
- data/spec/extensions/symbol_as_refinement_spec.rb +21 -0
- data/spec/integration/associations_test.rb +62 -57
- data/spec/integration/dataset_test.rb +54 -54
- data/spec/integration/eager_loader_test.rb +7 -7
- data/spec/integration/plugin_test.rb +20 -20
- data/spec/integration/prepared_statement_test.rb +1 -1
- data/spec/integration/schema_test.rb +21 -0
- data/spec/integration/spec_helper.rb +1 -0
- metadata +12 -2
@@ -178,7 +178,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
|
|
178
178
|
class ::Firm < Sequel::Model
|
179
179
|
one_to_many :clients
|
180
180
|
one_to_many :invoices, :read_only=>true, \
|
181
|
-
:dataset=>proc{Invoice.eager_graph(:client).filter(:
|
181
|
+
:dataset=>proc{Invoice.eager_graph(:client).filter(Sequel[:client][:firm_id]=>pk)}, \
|
182
182
|
:after_load=>(proc do |firm, invs|
|
183
183
|
invs.each do |inv|
|
184
184
|
inv.client.associations[:firm] = inv.associations[:firm] = firm
|
@@ -187,7 +187,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
|
|
187
187
|
:eager_loader=>(proc do |eo|
|
188
188
|
id_map = eo[:id_map]
|
189
189
|
eo[:rows].each{|firm| firm.associations[:invoices] = []}
|
190
|
-
Invoice.eager_graph(:client).filter(:
|
190
|
+
Invoice.eager_graph(:client).filter(Sequel[:client][:firm_id]=>id_map.keys).all do |inv|
|
191
191
|
id_map[inv.client.firm_id].each do |firm|
|
192
192
|
firm.associations[:invoices] << inv
|
193
193
|
end
|
@@ -211,7 +211,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
|
|
211
211
|
class ::Invoice < Sequel::Model
|
212
212
|
many_to_one :client
|
213
213
|
many_to_one :firm, :key=>nil, :read_only=>true, \
|
214
|
-
:dataset=>proc{Firm.eager_graph(:clients).filter(:
|
214
|
+
:dataset=>proc{Firm.eager_graph(:clients).filter(Sequel[:clients][:id]=>client_id)}, \
|
215
215
|
:after_load=>(proc do |inv, firm|
|
216
216
|
# Delete the cached associations from firm, because it only has the
|
217
217
|
# client with this invoice, instead of all clients of the firm
|
@@ -226,7 +226,7 @@ describe "has_many :through has_many and has_one :through belongs_to" do
|
|
226
226
|
inv.associations[:firm] = nil
|
227
227
|
(id_map[inv.client_id] ||= []) << inv
|
228
228
|
end
|
229
|
-
Firm.eager_graph(:clients).filter(:
|
229
|
+
Firm.eager_graph(:clients).filter(Sequel[:clients][:id]=>id_map.keys).all do |firm|
|
230
230
|
# Delete the cached associations from firm, because it only has the
|
231
231
|
# clients related the invoices being eagerly loaded, instead of all
|
232
232
|
# clients of the firm.
|
@@ -666,19 +666,19 @@ describe "one to one associations" do
|
|
666
666
|
end
|
667
667
|
|
668
668
|
it "should be eager loadable" do
|
669
|
-
bk1, bk2 = Book.filter(:
|
669
|
+
bk1, bk2 = Book.filter(Sequel[:books][:id]=>[1,2]).eager(:first_page).all
|
670
670
|
bk1.first_page.must_equal @page1
|
671
671
|
bk2.first_page.must_equal @page3
|
672
672
|
end
|
673
673
|
|
674
674
|
it "should be eager graphable" do
|
675
|
-
bk1, bk2 = Book.filter(:
|
675
|
+
bk1, bk2 = Book.filter(Sequel[:books][:id]=>[1,2]).eager_graph(:first_page).all
|
676
676
|
bk1.first_page.must_equal @page1
|
677
677
|
bk2.first_page.must_equal @page3
|
678
678
|
end
|
679
679
|
|
680
680
|
it "should be eager graphable two at once" do
|
681
|
-
bk1, bk2 = Book.filter(:
|
681
|
+
bk1, bk2 = Book.filter(Sequel[:books][:id]=>[1,2]).eager_graph(:first_page, :second_page).all
|
682
682
|
bk1.first_page.must_equal @page1
|
683
683
|
bk1.second_page.must_equal @page2
|
684
684
|
bk2.first_page.must_equal @page3
|
@@ -123,7 +123,7 @@ describe "Class Table Inheritance Plugin" do
|
|
123
123
|
end
|
124
124
|
|
125
125
|
it "should handle associations only defined in subclasses" do
|
126
|
-
Employee.filter(:
|
126
|
+
Employee.filter(Sequel[:employees][:id]=>@i2).all.first.manager.id.must_equal @i4
|
127
127
|
end
|
128
128
|
|
129
129
|
it "should insert rows into all tables" do
|
@@ -248,10 +248,10 @@ describe "Many Through Many Plugin" do
|
|
248
248
|
Artist.filter(:id=>@artist3.id).eager(:albums).all.map{|x| x.albums.map{|a| a.name}}.flatten.sort.must_equal %w'B C'
|
249
249
|
Artist.filter(:id=>@artist4.id).eager(:albums).all.map{|x| x.albums.map{|a| a.name}}.flatten.sort.must_equal %w'B D'
|
250
250
|
|
251
|
-
Artist.filter(:
|
252
|
-
Artist.filter(:
|
253
|
-
Artist.filter(:
|
254
|
-
Artist.filter(:
|
251
|
+
Artist.filter(Sequel[:artists][:id]=>@artist1.id).eager_graph(:albums).all.map{|x| x.albums.map{|a| a.name}}.flatten.sort.must_equal %w'A D'
|
252
|
+
Artist.filter(Sequel[:artists][:id]=>@artist2.id).eager_graph(:albums).all.map{|x| x.albums.map{|a| a.name}}.flatten.sort.must_equal %w'A C'
|
253
|
+
Artist.filter(Sequel[:artists][:id]=>@artist3.id).eager_graph(:albums).all.map{|x| x.albums.map{|a| a.name}}.flatten.sort.must_equal %w'B C'
|
254
|
+
Artist.filter(Sequel[:artists][:id]=>@artist4.id).eager_graph(:albums).all.map{|x| x.albums.map{|a| a.name}}.flatten.sort.must_equal %w'B D'
|
255
255
|
|
256
256
|
Artist.filter(:albums=>@album1).all.map{|a| a.name}.sort.must_equal %w'1 2'
|
257
257
|
Artist.filter(:albums=>@album2).all.map{|a| a.name}.sort.must_equal %w'3 4'
|
@@ -289,8 +289,8 @@ describe "Many Through Many Plugin" do
|
|
289
289
|
c.exclude(:albums=>[@album1, @album3]).all.map{|a| a.name}.sort.must_equal %w'4'
|
290
290
|
c.exclude(:albums=>[@album2, @album4]).all.map{|a| a.name}.sort.must_equal %w'2'
|
291
291
|
|
292
|
-
c.filter(:albums=>self_join(Album).filter(:
|
293
|
-
c.exclude(:albums=>self_join(Album).filter(:
|
292
|
+
c.filter(:albums=>self_join(Album).filter(Sequel[:albums][:id]=>[@album1.id, @album3.id])).all.map{|a| a.name}.sort.must_equal %w'1 2 3'
|
293
|
+
c.exclude(:albums=>self_join(Album).filter(Sequel[:albums][:id]=>[@album1.id, @album3.id])).all.map{|a| a.name}.sort.must_equal %w'4'
|
294
294
|
end
|
295
295
|
|
296
296
|
it "should handle typical case with 3 join tables" do
|
@@ -311,10 +311,10 @@ describe "Many Through Many Plugin" do
|
|
311
311
|
Artist.filter(:id=>@artist3.id).eager(:related_artists).all.map{|x| x.related_artists.map{|a| a.name}}.flatten.sort.must_equal %w'2 3 4'
|
312
312
|
Artist.filter(:id=>@artist4.id).eager(:related_artists).all.map{|x| x.related_artists.map{|a| a.name}}.flatten.sort.must_equal %w'1 3 4'
|
313
313
|
|
314
|
-
Artist.filter(:
|
315
|
-
Artist.filter(:
|
316
|
-
Artist.filter(:
|
317
|
-
Artist.filter(:
|
314
|
+
Artist.filter(Sequel[:artists][:id]=>@artist1.id).eager_graph(:related_artists).all.map{|x| x.related_artists.map{|a| a.name}}.flatten.sort.must_equal %w'1 2 4'
|
315
|
+
Artist.filter(Sequel[:artists][:id]=>@artist2.id).eager_graph(:related_artists).all.map{|x| x.related_artists.map{|a| a.name}}.flatten.sort.must_equal %w'1 2 3'
|
316
|
+
Artist.filter(Sequel[:artists][:id]=>@artist3.id).eager_graph(:related_artists).all.map{|x| x.related_artists.map{|a| a.name}}.flatten.sort.must_equal %w'2 3 4'
|
317
|
+
Artist.filter(Sequel[:artists][:id]=>@artist4.id).eager_graph(:related_artists).all.map{|x| x.related_artists.map{|a| a.name}}.flatten.sort.must_equal %w'1 3 4'
|
318
318
|
|
319
319
|
Artist.filter(:related_artists=>@artist1).all.map{|a| a.name}.sort.must_equal %w'1 2 4'
|
320
320
|
Artist.filter(:related_artists=>@artist2).all.map{|a| a.name}.sort.must_equal %w'1 2 3'
|
@@ -346,8 +346,8 @@ describe "Many Through Many Plugin" do
|
|
346
346
|
c.filter(:related_artists=>[@artist1, @artist4]).all.map{|a| a.name}.sort.must_equal %w'1 2 3 4'
|
347
347
|
c.exclude(:related_artists=>[@artist1, @artist4]).all.map{|a| a.name}.sort.must_equal %w''
|
348
348
|
|
349
|
-
c.filter(:related_artists=>c.filter(:
|
350
|
-
c.exclude(:related_artists=>c.filter(:
|
349
|
+
c.filter(:related_artists=>c.filter(Sequel[:artists][:id]=>@artist1.id)).all.map{|a| a.name}.sort.must_equal %w'1 2 4'
|
350
|
+
c.exclude(:related_artists=>c.filter(Sequel[:artists][:id]=>@artist1.id)).all.map{|a| a.name}.sort.must_equal %w'3'
|
351
351
|
end
|
352
352
|
|
353
353
|
it "should handle extreme case with 5 join tables" do
|
@@ -377,10 +377,10 @@ describe "Many Through Many Plugin" do
|
|
377
377
|
Artist.filter(:id=>@artist3.id).eager(:related_albums).all.map{|x| x.related_albums.map{|a| a.name}}.flatten.sort.must_equal %w'A B D'
|
378
378
|
Artist.filter(:id=>@artist4.id).eager(:related_albums).all.map{|x| x.related_albums.map{|a| a.name}}.flatten.sort.must_equal %w'B D'
|
379
379
|
|
380
|
-
Artist.filter(:
|
381
|
-
Artist.filter(:
|
382
|
-
Artist.filter(:
|
383
|
-
Artist.filter(:
|
380
|
+
Artist.filter(Sequel[:artists][:id]=>@artist1.id).eager_graph(:related_albums).all.map{|x| x.related_albums.map{|a| a.name}}.flatten.sort.must_equal %w'A B C'
|
381
|
+
Artist.filter(Sequel[:artists][:id]=>@artist2.id).eager_graph(:related_albums).all.map{|x| x.related_albums.map{|a| a.name}}.flatten.sort.must_equal %w'A B C D'
|
382
|
+
Artist.filter(Sequel[:artists][:id]=>@artist3.id).eager_graph(:related_albums).all.map{|x| x.related_albums.map{|a| a.name}}.flatten.sort.must_equal %w'A B D'
|
383
|
+
Artist.filter(Sequel[:artists][:id]=>@artist4.id).eager_graph(:related_albums).all.map{|x| x.related_albums.map{|a| a.name}}.flatten.sort.must_equal %w'B D'
|
384
384
|
|
385
385
|
Artist.filter(:related_albums=>@album1).all.map{|a| a.name}.sort.must_equal %w'1 2 3'
|
386
386
|
Artist.filter(:related_albums=>@album2).all.map{|a| a.name}.sort.must_equal %w'1 2 3 4'
|
@@ -418,8 +418,8 @@ describe "Many Through Many Plugin" do
|
|
418
418
|
c.exclude(:related_albums=>[@album1, @album3]).all.map{|a| a.name}.sort.must_equal %w'4'
|
419
419
|
c.exclude(:related_albums=>[@album2, @album4]).all.map{|a| a.name}.sort.must_equal %w''
|
420
420
|
|
421
|
-
c.filter(:related_albums=>self_join(Album).filter(:
|
422
|
-
c.exclude(:related_albums=>self_join(Album).filter(:
|
421
|
+
c.filter(:related_albums=>self_join(Album).filter(Sequel[:albums][:id]=>[@album1.id, @album3.id])).all.map{|a| a.name}.sort.must_equal %w'1 2 3'
|
422
|
+
c.exclude(:related_albums=>self_join(Album).filter(Sequel[:albums][:id]=>[@album1.id, @album3.id])).all.map{|a| a.name}.sort.must_equal %w'4'
|
423
423
|
end
|
424
424
|
end
|
425
425
|
|
@@ -1893,7 +1893,7 @@ describe "Sequel::Plugins::PreparedStatements with schema changes" do
|
|
1893
1893
|
@c = Class.new(Sequel::Model(@db[:ps_test]))
|
1894
1894
|
@c.many_to_one :ps_test, :key=>:id, :class=>@c
|
1895
1895
|
@c.one_to_many :ps_tests, :key=>:id, :class=>@c
|
1896
|
-
@c.many_to_many :mps_tests, :left_key=>:id, :right_key=>:id, :class=>@c, :join_table
|
1896
|
+
@c.many_to_many :mps_tests, :left_key=>:id, :right_key=>:id, :class=>@c, :join_table=>Sequel[:ps_test].as(:x)
|
1897
1897
|
@c.plugin :prepared_statements
|
1898
1898
|
@c.plugin :prepared_statements_associations
|
1899
1899
|
end
|
@@ -444,7 +444,7 @@ describe "Dataset#unbind" do
|
|
444
444
|
|
445
445
|
it "should handle QualifiedIdentifiers" do
|
446
446
|
@ct[Integer, 10]
|
447
|
-
@u[@ds.filter{
|
447
|
+
@u[@ds.filter{items[:c] > 1}].must_equal(:c=>10)
|
448
448
|
end
|
449
449
|
|
450
450
|
cspecify "should handle deep nesting", :h2 do
|
@@ -515,6 +515,27 @@ describe "Database schema modifiers" do
|
|
515
515
|
proc{@ds.insert(:id=>nil)}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
516
516
|
end
|
517
517
|
|
518
|
+
it "should not allow NULLs when adding a primary key column" do
|
519
|
+
@db.create_table!(:items){String :foo}
|
520
|
+
@db.alter_table(:items){add_column :id, String, :primary_key=>true, :default=>'a'}
|
521
|
+
proc{@ds.insert(:id=>nil)}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
522
|
+
end
|
523
|
+
|
524
|
+
it "should not allow NULLs when creating table with primary key constraint" do
|
525
|
+
@db.create_table!(:items){String :id1; String :id2; primary_key [:id1, :id2]}
|
526
|
+
proc{@ds.insert(:id1=>nil, :id2=>nil)}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
527
|
+
proc{@ds.insert(:id1=>nil, :id2=>'1')}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
528
|
+
proc{@ds.insert(:id1=>'1', :id2=>nil)}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
529
|
+
end
|
530
|
+
|
531
|
+
it "should not allow NULLs when adding a primary key constraint" do
|
532
|
+
@db.create_table!(:items){String :id1; String :id2}
|
533
|
+
@db.alter_table(:items){add_primary_key [:id1, :id2]}
|
534
|
+
proc{@ds.insert(:id1=>nil, :id2=>nil)}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
535
|
+
proc{@ds.insert(:id1=>nil, :id2=>'1')}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
536
|
+
proc{@ds.insert(:id1=>'1', :id2=>nil)}.must_raise(Sequel::NotNullConstraintViolation, Sequel::ConstraintViolation, Sequel::DatabaseError)
|
537
|
+
end
|
538
|
+
|
518
539
|
it "should rename columns correctly" do
|
519
540
|
@db.create_table!(:items){Integer :id}
|
520
541
|
@ds.insert(:id=>10)
|
@@ -16,6 +16,7 @@ rescue LoadError
|
|
16
16
|
end
|
17
17
|
Sequel::Deprecation.backtrace_filter = lambda{|line, lineno| lineno < 4 || line =~ /_(spec|test)\.rb/}
|
18
18
|
|
19
|
+
Sequel.split_symbols = false if ENV['SEQUEL_NO_SPLIT_SYMBOLS']
|
19
20
|
Sequel::Database.extension :columns_introspection if ENV['SEQUEL_COLUMNS_INTROSPECTION']
|
20
21
|
Sequel::Model.cache_associations = false if ENV['SEQUEL_NO_CACHE_ASSOCIATIONS']
|
21
22
|
Sequel::Model.use_transactions = false
|
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: 4.
|
4
|
+
version: 4.40.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: 2016-10-
|
11
|
+
date: 2016-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -240,6 +240,7 @@ extra_rdoc_files:
|
|
240
240
|
- doc/release_notes/4.37.0.txt
|
241
241
|
- doc/release_notes/4.38.0.txt
|
242
242
|
- doc/release_notes/4.39.0.txt
|
243
|
+
- doc/release_notes/4.40.0.txt
|
243
244
|
files:
|
244
245
|
- CHANGELOG
|
245
246
|
- MIT-LICENSE
|
@@ -369,6 +370,7 @@ files:
|
|
369
370
|
- doc/release_notes/4.38.0.txt
|
370
371
|
- doc/release_notes/4.39.0.txt
|
371
372
|
- doc/release_notes/4.4.0.txt
|
373
|
+
- doc/release_notes/4.40.0.txt
|
372
374
|
- doc/release_notes/4.5.0.txt
|
373
375
|
- doc/release_notes/4.6.0.txt
|
374
376
|
- doc/release_notes/4.7.0.txt
|
@@ -531,6 +533,7 @@ files:
|
|
531
533
|
- lib/sequel/extensions/query_literals.rb
|
532
534
|
- lib/sequel/extensions/round_timestamps.rb
|
533
535
|
- lib/sequel/extensions/ruby18_symbol_extensions.rb
|
536
|
+
- lib/sequel/extensions/s.rb
|
534
537
|
- lib/sequel/extensions/schema_caching.rb
|
535
538
|
- lib/sequel/extensions/schema_dumper.rb
|
536
539
|
- lib/sequel/extensions/select_remove.rb
|
@@ -543,6 +546,10 @@ files:
|
|
543
546
|
- lib/sequel/extensions/sql_expr.rb
|
544
547
|
- lib/sequel/extensions/string_agg.rb
|
545
548
|
- lib/sequel/extensions/string_date_time.rb
|
549
|
+
- lib/sequel/extensions/symbol_aref.rb
|
550
|
+
- lib/sequel/extensions/symbol_aref_refinement.rb
|
551
|
+
- lib/sequel/extensions/symbol_as.rb
|
552
|
+
- lib/sequel/extensions/symbol_as_refinement.rb
|
546
553
|
- lib/sequel/extensions/thread_local_timezones.rb
|
547
554
|
- lib/sequel/extensions/to_dot.rb
|
548
555
|
- lib/sequel/model.rb
|
@@ -757,6 +764,7 @@ files:
|
|
757
764
|
- spec/extensions/query_spec.rb
|
758
765
|
- spec/extensions/rcte_tree_spec.rb
|
759
766
|
- spec/extensions/round_timestamps_spec.rb
|
767
|
+
- spec/extensions/s_spec.rb
|
760
768
|
- spec/extensions/schema_caching_spec.rb
|
761
769
|
- spec/extensions/schema_dumper_spec.rb
|
762
770
|
- spec/extensions/schema_spec.rb
|
@@ -784,6 +792,8 @@ files:
|
|
784
792
|
- spec/extensions/string_stripper_spec.rb
|
785
793
|
- spec/extensions/subclasses_spec.rb
|
786
794
|
- spec/extensions/subset_conditions_spec.rb
|
795
|
+
- spec/extensions/symbol_aref_refinement_spec.rb
|
796
|
+
- spec/extensions/symbol_as_refinement_spec.rb
|
787
797
|
- spec/extensions/table_select_spec.rb
|
788
798
|
- spec/extensions/tactical_eager_loading_spec.rb
|
789
799
|
- spec/extensions/thread_local_timezones_spec.rb
|