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