sequel 3.40.0 → 3.41.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +40 -0
- data/README.rdoc +2 -2
- data/doc/advanced_associations.rdoc +12 -0
- data/doc/bin_sequel.rdoc +144 -0
- data/doc/migration.rdoc +1 -1
- data/doc/object_model.rdoc +29 -0
- data/doc/release_notes/3.41.0.txt +155 -0
- data/lib/sequel/adapters/ado.rb +4 -4
- data/lib/sequel/adapters/amalgalite.rb +0 -5
- data/lib/sequel/adapters/cubrid.rb +2 -2
- data/lib/sequel/adapters/db2.rb +9 -5
- data/lib/sequel/adapters/dbi.rb +4 -6
- data/lib/sequel/adapters/do.rb +4 -5
- data/lib/sequel/adapters/firebird.rb +8 -4
- data/lib/sequel/adapters/ibmdb.rb +2 -3
- data/lib/sequel/adapters/informix.rb +0 -6
- data/lib/sequel/adapters/jdbc.rb +11 -7
- data/lib/sequel/adapters/jdbc/db2.rb +22 -0
- data/lib/sequel/adapters/jdbc/derby.rb +5 -5
- data/lib/sequel/adapters/jdbc/h2.rb +0 -5
- data/lib/sequel/adapters/jdbc/jtds.rb +1 -1
- data/lib/sequel/adapters/jdbc/sqlserver.rb +6 -0
- data/lib/sequel/adapters/mock.rb +3 -3
- data/lib/sequel/adapters/mysql.rb +7 -7
- data/lib/sequel/adapters/mysql2.rb +0 -5
- data/lib/sequel/adapters/odbc.rb +4 -4
- data/lib/sequel/adapters/openbase.rb +4 -6
- data/lib/sequel/adapters/oracle.rb +14 -6
- data/lib/sequel/adapters/postgres.rb +12 -8
- data/lib/sequel/adapters/shared/db2.rb +5 -0
- data/lib/sequel/adapters/shared/firebird.rb +10 -0
- data/lib/sequel/adapters/shared/mssql.rb +43 -1
- data/lib/sequel/adapters/shared/mysql.rb +1 -0
- data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +1 -1
- data/lib/sequel/adapters/shared/postgres.rb +12 -0
- data/lib/sequel/adapters/shared/sqlite.rb +32 -0
- data/lib/sequel/adapters/sqlite.rb +9 -8
- data/lib/sequel/adapters/swift.rb +3 -8
- data/lib/sequel/adapters/tinytds.rb +5 -5
- data/lib/sequel/connection_pool.rb +13 -19
- data/lib/sequel/connection_pool/sharded_single.rb +12 -12
- data/lib/sequel/connection_pool/sharded_threaded.rb +37 -17
- data/lib/sequel/connection_pool/single.rb +6 -3
- data/lib/sequel/connection_pool/threaded.rb +33 -13
- data/lib/sequel/database/connecting.rb +28 -1
- data/lib/sequel/database/logging.rb +1 -1
- data/lib/sequel/database/misc.rb +2 -5
- data/lib/sequel/database/query.rb +2 -2
- data/lib/sequel/database/schema_generator.rb +1 -1
- data/lib/sequel/database/schema_methods.rb +3 -0
- data/lib/sequel/dataset/query.rb +8 -4
- data/lib/sequel/dataset/sql.rb +7 -0
- data/lib/sequel/extensions/arbitrary_servers.rb +1 -1
- data/lib/sequel/extensions/connection_validator.rb +109 -0
- data/lib/sequel/extensions/pg_array.rb +2 -0
- data/lib/sequel/extensions/pg_hstore.rb +2 -0
- data/lib/sequel/extensions/pg_json.rb +4 -0
- data/lib/sequel/extensions/pg_range.rb +1 -0
- data/lib/sequel/extensions/pg_row.rb +4 -0
- data/lib/sequel/plugins/prepared_statements.rb +2 -1
- data/lib/sequel/plugins/single_table_inheritance.rb +53 -10
- data/lib/sequel/plugins/touch.rb +18 -6
- data/lib/sequel/plugins/validation_class_methods.rb +1 -0
- data/lib/sequel/plugins/validation_helpers.rb +3 -1
- data/lib/sequel/sql.rb +61 -19
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/firebird_spec.rb +52 -38
- data/spec/adapters/mssql_spec.rb +67 -0
- data/spec/adapters/mysql_spec.rb +192 -116
- data/spec/adapters/postgres_spec.rb +133 -70
- data/spec/adapters/spec_helper.rb +7 -0
- data/spec/adapters/sqlite_spec.rb +34 -1
- data/spec/core/connection_pool_spec.rb +79 -75
- data/spec/core/database_spec.rb +9 -4
- data/spec/core/dataset_spec.rb +15 -0
- data/spec/core/expression_filters_spec.rb +40 -2
- data/spec/extensions/connection_validator_spec.rb +118 -0
- data/spec/extensions/pg_array_spec.rb +4 -0
- data/spec/extensions/single_table_inheritance_spec.rb +42 -0
- data/spec/extensions/touch_spec.rb +40 -0
- data/spec/extensions/validation_class_methods_spec.rb +19 -1
- data/spec/extensions/validation_helpers_spec.rb +17 -0
- data/spec/integration/database_test.rb +14 -0
- data/spec/integration/dataset_test.rb +3 -3
- data/spec/integration/plugin_test.rb +41 -12
- data/spec/integration/schema_test.rb +14 -0
- data/spec/integration/spec_helper.rb +7 -0
- data/spec/integration/type_test.rb +3 -0
- metadata +9 -3
@@ -530,60 +530,89 @@ end
|
|
530
530
|
describe "Touch plugin" do
|
531
531
|
before(:all) do
|
532
532
|
@db = INTEGRATION_DB
|
533
|
-
@db.
|
534
|
-
@db.create_table
|
533
|
+
@db.drop_table? :albums_artists, :albums, :artists
|
534
|
+
@db.create_table(:artists) do
|
535
535
|
primary_key :id
|
536
536
|
String :name
|
537
537
|
DateTime :updated_at
|
538
538
|
end
|
539
|
-
@db.create_table
|
539
|
+
@db.create_table(:albums) do
|
540
540
|
primary_key :id
|
541
541
|
String :name
|
542
542
|
foreign_key :artist_id, :artists
|
543
543
|
DateTime :updated_at
|
544
544
|
end
|
545
|
+
@db.create_join_table({:album_id=>:albums, :artist_id=>:artists}, :no_index=>true)
|
545
546
|
end
|
546
547
|
before do
|
547
548
|
@db[:albums].delete
|
548
549
|
@db[:artists].delete
|
549
550
|
class ::Album < Sequel::Model(@db)
|
550
|
-
many_to_one :artist
|
551
|
-
plugin :touch, :associations=>:artist
|
552
551
|
end
|
553
552
|
class ::Artist < Sequel::Model(@db)
|
554
553
|
end
|
555
554
|
|
556
555
|
@artist = Artist.create(:name=>'1')
|
557
|
-
@album = Album.create(:name=>'A', :
|
556
|
+
@album = Album.create(:name=>'A', :artist_id=>@artist.id)
|
558
557
|
end
|
559
558
|
after do
|
560
559
|
[:Album, :Artist].each{|s| Object.send(:remove_const, s)}
|
561
560
|
end
|
562
561
|
after(:all) do
|
563
|
-
@db.drop_table? :albums, :artists
|
562
|
+
@db.drop_table? :albums_artists, :albums, :artists
|
564
563
|
end
|
565
564
|
|
566
565
|
specify "should update the timestamp column when touching the record" do
|
566
|
+
Album.plugin :touch
|
567
567
|
@album.updated_at.should == nil
|
568
568
|
@album.touch
|
569
569
|
@album.updated_at.to_i.should be_within(2).of(Time.now.to_i)
|
570
570
|
end
|
571
571
|
|
572
|
-
cspecify "should update the timestamp column for associated records when the record is updated or destroyed", [:do, :sqlite], [:jdbc, :sqlite], [:swift] do
|
572
|
+
cspecify "should update the timestamp column for many_to_one associated records when the record is updated or destroyed", [:do, :sqlite], [:jdbc, :sqlite], [:swift] do
|
573
|
+
Album.many_to_one :artist
|
574
|
+
Album.plugin :touch, :associations=>:artist
|
573
575
|
@artist.updated_at.should == nil
|
574
576
|
@album.update(:name=>'B')
|
575
577
|
ua = @artist.reload.updated_at
|
576
578
|
if ua.is_a?(Time)
|
577
|
-
ua.to_i.should be_within(
|
579
|
+
ua.to_i.should be_within(60).of(Time.now.to_i)
|
578
580
|
else
|
579
|
-
(DateTime.now - ua).should be_within(
|
581
|
+
(DateTime.now - ua).should be_within(60.0/86400).of(0)
|
580
582
|
end
|
581
583
|
@artist.update(:updated_at=>nil)
|
582
584
|
@album.destroy
|
583
585
|
if ua.is_a?(Time)
|
584
|
-
ua.to_i.should be_within(
|
586
|
+
ua.to_i.should be_within(60).of(Time.now.to_i)
|
587
|
+
else
|
588
|
+
(DateTime.now - ua).should be_within(60.0/86400).of(0)
|
589
|
+
end
|
590
|
+
end
|
591
|
+
|
592
|
+
cspecify "should update the timestamp column for one_to_many associated records when the record is updated", [:do, :sqlite], [:jdbc, :sqlite], [:swift] do
|
593
|
+
Artist.one_to_many :albums
|
594
|
+
Artist.plugin :touch, :associations=>:albums
|
595
|
+
@album.updated_at.should == nil
|
596
|
+
@artist.update(:name=>'B')
|
597
|
+
ua = @album.reload.updated_at
|
598
|
+
if ua.is_a?(Time)
|
599
|
+
ua.to_i.should be_within(60).of(Time.now.to_i)
|
600
|
+
else
|
601
|
+
(DateTime.now - ua).should be_within(60.0/86400).of(0)
|
602
|
+
end
|
603
|
+
end
|
604
|
+
|
605
|
+
cspecify "should update the timestamp column for many_to_many associated records when the record is updated", [:do, :sqlite], [:jdbc, :sqlite], [:swift] do
|
606
|
+
Artist.many_to_many :albums
|
607
|
+
Artist.plugin :touch, :associations=>:albums
|
608
|
+
@artist.add_album(@album)
|
609
|
+
@album.updated_at.should == nil
|
610
|
+
@artist.update(:name=>'B')
|
611
|
+
ua = @album.reload.updated_at
|
612
|
+
if ua.is_a?(Time)
|
613
|
+
ua.to_i.should be_within(60).of(Time.now.to_i)
|
585
614
|
else
|
586
|
-
(DateTime.now - ua).should be_within(
|
615
|
+
(DateTime.now - ua).should be_within(60.0/86400).of(0)
|
587
616
|
end
|
588
617
|
end
|
589
618
|
end
|
@@ -389,6 +389,11 @@ describe "Database schema modifiers" do
|
|
389
389
|
@ds.all.should == [{:id=>i, :item_id=>nil}]
|
390
390
|
end
|
391
391
|
|
392
|
+
specify "should not allow NULLs in a primary key" do
|
393
|
+
@db.create_table!(:items){String :id, :primary_key=>true}
|
394
|
+
proc{@ds.insert(:id=>nil)}.should raise_error(Sequel::DatabaseError)
|
395
|
+
end
|
396
|
+
|
392
397
|
specify "should rename columns correctly" do
|
393
398
|
@db.create_table!(:items){Integer :id}
|
394
399
|
@ds.insert(:id=>10)
|
@@ -430,6 +435,15 @@ describe "Database schema modifiers" do
|
|
430
435
|
@db[:items2].select_order_map([:id, :b]).should == [[1, 10], [2, 20]]
|
431
436
|
end
|
432
437
|
|
438
|
+
cspecify "should rename primary_key columns correctly", :db2 do
|
439
|
+
@db.create_table!(:items){Integer :id, :primary_key=>true}
|
440
|
+
@ds.insert(:id=>10)
|
441
|
+
@db.alter_table(:items){rename_column :id, :id2}
|
442
|
+
@db.schema(:items, :reload=>true).map{|x| x.first}.should == [:id2]
|
443
|
+
@ds.columns!.should == [:id2]
|
444
|
+
@ds.all.should == [{:id2=>10}]
|
445
|
+
end
|
446
|
+
|
433
447
|
cspecify "should set column NULL/NOT NULL correctly", [:jdbc, :db2], [:db2] do
|
434
448
|
@db.create_table!(:items, :engine=>:InnoDB){Integer :id}
|
435
449
|
@ds.insert(:id=>10)
|
@@ -94,3 +94,10 @@ if INTEGRATION_DB.adapter_scheme == :ibmdb || (INTEGRATION_DB.adapter_scheme ==
|
|
94
94
|
super
|
95
95
|
end
|
96
96
|
end
|
97
|
+
|
98
|
+
if ENV['SEQUEL_CONNECTION_VALIDATOR']
|
99
|
+
ENV['SEQUEL_NO_CHECK_SQLS'] = '1'
|
100
|
+
INTEGRATION_DB.extension(:connection_validator)
|
101
|
+
INTEGRATION_DB.pool.connection_validation_timeout = -1
|
102
|
+
end
|
103
|
+
|
@@ -64,6 +64,9 @@ describe "Supported types" do
|
|
64
64
|
ds = create_items_table_with_column(:name, String, :text=>true)
|
65
65
|
ds.insert(:name => 'Test User'*100)
|
66
66
|
ds.all.should == [{:name=>'Test User'*100}]
|
67
|
+
|
68
|
+
ds.update(:name=>ds.get(:name))
|
69
|
+
ds.all.should == [{:name=>'Test User'*100}]
|
67
70
|
end
|
68
71
|
|
69
72
|
cspecify "should support generic date type", [:do, :sqlite], [:jdbc, :sqlite], :mssql, :oracle do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.41.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-01 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: The Database Toolkit for Ruby
|
15
15
|
email: code@jeremyevans.net
|
@@ -43,6 +43,7 @@ extra_rdoc_files:
|
|
43
43
|
- doc/thread_safety.rdoc
|
44
44
|
- doc/object_model.rdoc
|
45
45
|
- doc/core_extensions.rdoc
|
46
|
+
- doc/bin_sequel.rdoc
|
46
47
|
- doc/release_notes/1.0.txt
|
47
48
|
- doc/release_notes/1.1.txt
|
48
49
|
- doc/release_notes/1.3.txt
|
@@ -102,6 +103,7 @@ extra_rdoc_files:
|
|
102
103
|
- doc/release_notes/3.38.0.txt
|
103
104
|
- doc/release_notes/3.39.0.txt
|
104
105
|
- doc/release_notes/3.40.0.txt
|
106
|
+
- doc/release_notes/3.41.0.txt
|
105
107
|
files:
|
106
108
|
- MIT-LICENSE
|
107
109
|
- CHANGELOG
|
@@ -179,6 +181,7 @@ files:
|
|
179
181
|
- doc/release_notes/3.38.0.txt
|
180
182
|
- doc/release_notes/3.39.0.txt
|
181
183
|
- doc/release_notes/3.40.0.txt
|
184
|
+
- doc/release_notes/3.41.0.txt
|
182
185
|
- doc/sharding.rdoc
|
183
186
|
- doc/sql.rdoc
|
184
187
|
- doc/validations.rdoc
|
@@ -190,6 +193,7 @@ files:
|
|
190
193
|
- doc/thread_safety.rdoc
|
191
194
|
- doc/object_model.rdoc
|
192
195
|
- doc/core_extensions.rdoc
|
196
|
+
- doc/bin_sequel.rdoc
|
193
197
|
- spec/adapters/firebird_spec.rb
|
194
198
|
- spec/adapters/informix_spec.rb
|
195
199
|
- spec/adapters/mssql_spec.rb
|
@@ -243,7 +247,6 @@ files:
|
|
243
247
|
- spec/extensions/thread_local_timezones_spec.rb
|
244
248
|
- spec/extensions/timestamps_spec.rb
|
245
249
|
- spec/extensions/typecast_on_load_spec.rb
|
246
|
-
- spec/extensions/validation_class_methods_spec.rb
|
247
250
|
- spec/extensions/validation_helpers_spec.rb
|
248
251
|
- spec/extensions/composition_spec.rb
|
249
252
|
- spec/extensions/rcte_tree_spec.rb
|
@@ -297,6 +300,8 @@ files:
|
|
297
300
|
- spec/extensions/pg_typecast_on_load_spec.rb
|
298
301
|
- spec/extensions/constraint_validations_plugin_spec.rb
|
299
302
|
- spec/extensions/constraint_validations_spec.rb
|
303
|
+
- spec/extensions/connection_validator_spec.rb
|
304
|
+
- spec/extensions/validation_class_methods_spec.rb
|
300
305
|
- spec/integration/associations_test.rb
|
301
306
|
- spec/integration/database_test.rb
|
302
307
|
- spec/integration/dataset_test.rb
|
@@ -497,6 +502,7 @@ files:
|
|
497
502
|
- lib/sequel/extensions/pg_row.rb
|
498
503
|
- lib/sequel/extensions/pg_row_ops.rb
|
499
504
|
- lib/sequel/extensions/constraint_validations.rb
|
505
|
+
- lib/sequel/extensions/connection_validator.rb
|
500
506
|
- lib/sequel/metaprogramming.rb
|
501
507
|
- lib/sequel/model.rb
|
502
508
|
- lib/sequel/model/associations.rb
|