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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +34 -0
  3. data/README.rdoc +8 -4
  4. data/doc/active_record.rdoc +1 -1
  5. data/doc/advanced_associations.rdoc +7 -7
  6. data/doc/association_basics.rdoc +7 -7
  7. data/doc/cheat_sheet.rdoc +5 -3
  8. data/doc/core_extensions.rdoc +3 -3
  9. data/doc/dataset_filtering.rdoc +1 -1
  10. data/doc/object_model.rdoc +16 -7
  11. data/doc/postgresql.rdoc +3 -3
  12. data/doc/querying.rdoc +3 -3
  13. data/doc/release_notes/4.40.0.txt +179 -0
  14. data/doc/security.rdoc +2 -1
  15. data/doc/sql.rdoc +34 -18
  16. data/doc/testing.rdoc +1 -0
  17. data/doc/virtual_rows.rdoc +11 -2
  18. data/lib/sequel/adapters/jdbc/derby.rb +7 -1
  19. data/lib/sequel/adapters/jdbc/h2.rb +15 -1
  20. data/lib/sequel/adapters/oracle.rb +9 -5
  21. data/lib/sequel/adapters/postgres.rb +0 -1
  22. data/lib/sequel/adapters/shared/cubrid.rb +11 -11
  23. data/lib/sequel/adapters/shared/db2.rb +4 -8
  24. data/lib/sequel/adapters/shared/mssql.rb +41 -28
  25. data/lib/sequel/adapters/shared/mysql.rb +9 -6
  26. data/lib/sequel/adapters/shared/oracle.rb +16 -5
  27. data/lib/sequel/adapters/shared/postgres.rb +84 -45
  28. data/lib/sequel/adapters/shared/sqlanywhere.rb +29 -15
  29. data/lib/sequel/adapters/shared/sqlite.rb +6 -6
  30. data/lib/sequel/core.rb +61 -10
  31. data/lib/sequel/database/connecting.rb +2 -1
  32. data/lib/sequel/database/features.rb +7 -0
  33. data/lib/sequel/database/query.rb +1 -1
  34. data/lib/sequel/database/schema_methods.rb +30 -3
  35. data/lib/sequel/database/transactions.rb +4 -2
  36. data/lib/sequel/dataset/actions.rb +1 -1
  37. data/lib/sequel/dataset/graph.rb +6 -1
  38. data/lib/sequel/dataset/query.rb +14 -7
  39. data/lib/sequel/dataset/sql.rb +2 -2
  40. data/lib/sequel/extensions/core_extensions.rb +2 -1
  41. data/lib/sequel/extensions/pg_row.rb +2 -2
  42. data/lib/sequel/extensions/s.rb +57 -0
  43. data/lib/sequel/extensions/set_overrides.rb +5 -1
  44. data/lib/sequel/extensions/sql_expr.rb +1 -0
  45. data/lib/sequel/extensions/symbol_aref.rb +71 -0
  46. data/lib/sequel/extensions/symbol_aref_refinement.rb +41 -0
  47. data/lib/sequel/extensions/symbol_as.rb +23 -0
  48. data/lib/sequel/extensions/symbol_as_refinement.rb +35 -0
  49. data/lib/sequel/model/base.rb +3 -3
  50. data/lib/sequel/plugins/class_table_inheritance.rb +14 -3
  51. data/lib/sequel/plugins/column_select.rb +4 -2
  52. data/lib/sequel/plugins/dataset_associations.rb +12 -4
  53. data/lib/sequel/plugins/insert_returning_select.rb +1 -1
  54. data/lib/sequel/plugins/mssql_optimistic_locking.rb +1 -1
  55. data/lib/sequel/plugins/prepared_statements.rb +1 -0
  56. data/lib/sequel/sql.rb +40 -8
  57. data/lib/sequel/version.rb +1 -1
  58. data/spec/adapters/firebird_spec.rb +3 -3
  59. data/spec/adapters/mssql_spec.rb +40 -40
  60. data/spec/adapters/mysql_spec.rb +5 -5
  61. data/spec/adapters/oracle_spec.rb +4 -4
  62. data/spec/adapters/postgres_spec.rb +135 -124
  63. data/spec/adapters/spec_helper.rb +1 -0
  64. data/spec/adapters/sqlite_spec.rb +6 -6
  65. data/spec/core/dataset_spec.rb +2 -2
  66. data/spec/core/expression_filters_spec.rb +43 -2
  67. data/spec/core/schema_spec.rb +35 -1
  68. data/spec/core_extensions_spec.rb +27 -0
  69. data/spec/extensions/class_table_inheritance_spec.rb +8 -0
  70. data/spec/extensions/column_select_spec.rb +8 -0
  71. data/spec/extensions/core_refinements_spec.rb +1 -1
  72. data/spec/extensions/dataset_associations_spec.rb +9 -0
  73. data/spec/extensions/insert_returning_select_spec.rb +20 -0
  74. data/spec/extensions/prepared_statements_spec.rb +7 -0
  75. data/spec/extensions/s_spec.rb +60 -0
  76. data/spec/extensions/symbol_aref_refinement_spec.rb +28 -0
  77. data/spec/extensions/symbol_as_refinement_spec.rb +21 -0
  78. data/spec/integration/associations_test.rb +62 -57
  79. data/spec/integration/dataset_test.rb +54 -54
  80. data/spec/integration/eager_loader_test.rb +7 -7
  81. data/spec/integration/plugin_test.rb +20 -20
  82. data/spec/integration/prepared_statement_test.rb +1 -1
  83. data/spec/integration/schema_test.rb +21 -0
  84. data/spec/integration/spec_helper.rb +1 -0
  85. 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(:client__firm_id=>pk)}, \
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(:client__firm_id=>id_map.keys).all do |inv|
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(:clients__id=>client_id)}, \
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(:clients__id=>id_map.keys).all do |firm|
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(:books__id=>[1,2]).eager(:first_page).all
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(:books__id=>[1,2]).eager_graph(:first_page).all
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(:books__id=>[1,2]).eager_graph(:first_page, :second_page).all
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(:employees__id=>@i2).all.first.manager.id.must_equal @i4
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(: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(: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(: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(:artists__id=>@artist4.id).eager_graph(:albums).all.map{|x| x.albums.map{|a| a.name}}.flatten.sort.must_equal %w'B D'
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(: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(:albums__id=>[@album1.id, @album3.id])).all.map{|a| a.name}.sort.must_equal %w'4'
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(: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(: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(: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(: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'
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(:artists__id=>@artist1.id)).all.map{|a| a.name}.sort.must_equal %w'1 2 4'
350
- c.exclude(:related_artists=>c.filter(:artists__id=>@artist1.id)).all.map{|a| a.name}.sort.must_equal %w'3'
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(: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(: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(: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(: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'
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(: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(:albums__id=>[@album1.id, @album3.id])).all.map{|a| a.name}.sort.must_equal %w'4'
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=>:ps_test___x
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{items__c > 1}].must_equal(:c=>10)
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.39.0
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-01 00:00:00.000000000 Z
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