sequel 3.20.0 → 3.21.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +32 -0
- data/MIT-LICENSE +1 -1
- data/README.rdoc +1 -1
- data/Rakefile +13 -3
- data/bin/sequel +18 -5
- data/doc/active_record.rdoc +4 -4
- data/doc/opening_databases.rdoc +38 -1
- data/doc/release_notes/3.21.0.txt +87 -0
- data/doc/validations.rdoc +2 -2
- data/lib/sequel/adapters/informix.rb +1 -1
- data/lib/sequel/adapters/jdbc/h2.rb +2 -5
- data/lib/sequel/adapters/jdbc/mssql.rb +1 -4
- data/lib/sequel/adapters/jdbc/mysql.rb +1 -4
- data/lib/sequel/adapters/jdbc/postgresql.rb +1 -6
- data/lib/sequel/adapters/jdbc/sqlite.rb +2 -8
- data/lib/sequel/adapters/shared/mssql.rb +8 -0
- data/lib/sequel/adapters/shared/mysql.rb +23 -3
- data/lib/sequel/adapters/shared/oracle.rb +2 -2
- data/lib/sequel/adapters/tinytds.rb +125 -0
- data/lib/sequel/database/connecting.rb +1 -1
- data/lib/sequel/database/schema_methods.rb +37 -5
- data/lib/sequel/dataset/sql.rb +6 -6
- data/lib/sequel/extensions/schema_dumper.rb +1 -1
- data/lib/sequel/model/base.rb +50 -0
- data/lib/sequel/model/plugins.rb +0 -55
- data/lib/sequel/plugins/association_autoreloading.rb +48 -0
- data/lib/sequel/plugins/validation_class_methods.rb +6 -5
- data/lib/sequel/plugins/validation_helpers.rb +2 -2
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/firebird_spec.rb +6 -6
- data/spec/adapters/informix_spec.rb +2 -2
- data/spec/adapters/mssql_spec.rb +18 -13
- data/spec/adapters/mysql_spec.rb +47 -20
- data/spec/adapters/oracle_spec.rb +40 -4
- data/spec/adapters/postgres_spec.rb +14 -14
- data/spec/adapters/spec_helper.rb +1 -1
- data/spec/adapters/sqlite_spec.rb +8 -8
- data/spec/core/connection_pool_spec.rb +18 -17
- data/spec/core/core_sql_spec.rb +18 -18
- data/spec/core/database_spec.rb +62 -62
- data/spec/core/dataset_spec.rb +105 -92
- data/spec/core/expression_filters_spec.rb +2 -2
- data/spec/core/schema_spec.rb +6 -6
- data/spec/core/version_spec.rb +1 -1
- data/spec/extensions/association_autoreloading_spec.rb +94 -0
- data/spec/extensions/blank_spec.rb +6 -6
- data/spec/extensions/looser_typecasting_spec.rb +1 -1
- data/spec/extensions/migration_spec.rb +6 -6
- data/spec/extensions/pagination_spec.rb +2 -2
- data/spec/extensions/pretty_table_spec.rb +2 -2
- data/spec/extensions/query_spec.rb +2 -2
- data/spec/extensions/schema_dumper_spec.rb +2 -1
- data/spec/extensions/single_table_inheritance_spec.rb +1 -1
- data/spec/extensions/sql_expr_spec.rb +1 -1
- data/spec/extensions/string_date_time_spec.rb +4 -4
- data/spec/extensions/validation_class_methods_spec.rb +2 -2
- data/spec/integration/dataset_test.rb +8 -3
- data/spec/integration/plugin_test.rb +5 -5
- data/spec/integration/prepared_statement_test.rb +1 -1
- data/spec/integration/schema_test.rb +7 -0
- data/spec/integration/spec_helper.rb +14 -1
- data/spec/integration/timezone_test.rb +4 -4
- data/spec/integration/type_test.rb +1 -1
- data/spec/model/model_spec.rb +3 -3
- metadata +9 -4
@@ -414,7 +414,7 @@ describe "Touch plugin" do
|
|
414
414
|
specify "should update the timestamp column when touching the record" do
|
415
415
|
@album.updated_at.should == nil
|
416
416
|
@album.touch
|
417
|
-
@album.updated_at.to_i.should
|
417
|
+
@album.updated_at.to_i.should be_within(2).of(Time.now.to_i)
|
418
418
|
end
|
419
419
|
|
420
420
|
cspecify "should update the timestamp column for associated records when the record is updated or destroyed", [:do, :sqlite], [:jdbc, :sqlite] do
|
@@ -422,16 +422,16 @@ describe "Touch plugin" do
|
|
422
422
|
@album.update(:name=>'B')
|
423
423
|
ua = @artist.reload.updated_at
|
424
424
|
if ua.is_a?(Time)
|
425
|
-
ua.to_i.should
|
425
|
+
ua.to_i.should be_within(2).of(Time.now.to_i)
|
426
426
|
else
|
427
|
-
(DateTime.now - ua).should
|
427
|
+
(DateTime.now - ua).should be_within(2.0/86400).of(0)
|
428
428
|
end
|
429
429
|
@artist.update(:updated_at=>nil)
|
430
430
|
@album.destroy
|
431
431
|
if ua.is_a?(Time)
|
432
|
-
ua.to_i.should
|
432
|
+
ua.to_i.should be_within(2).of(Time.now.to_i)
|
433
433
|
else
|
434
|
-
(DateTime.now - ua).should
|
434
|
+
(DateTime.now - ua).should be_within(2.0/86400).of(0)
|
435
435
|
end
|
436
436
|
end
|
437
437
|
end
|
@@ -242,7 +242,7 @@ describe "Bound Argument Types" do
|
|
242
242
|
@ds.filter(:d=>@ds.ba(:$x, :date)).prepare(:first, :ps_date).call(:x=>@vs[:d])[:d].should == @vs[:d]
|
243
243
|
end
|
244
244
|
|
245
|
-
cspecify "should handle datetime type", [:do], [:mysql2], [:swift], [:jdbc, :sqlite] do
|
245
|
+
cspecify "should handle datetime type", [:do], [:mysql2], [:swift], [:jdbc, :sqlite], [:tinytds] do
|
246
246
|
Sequel.datetime_class = DateTime
|
247
247
|
@ds.filter(:dt=>@ds.ba(:$x, :timestamp)).prepare(:first, :ps_datetime).call(:x=>@vs[:dt])[:dt].should == @vs[:dt]
|
248
248
|
end
|
@@ -193,6 +193,13 @@ describe "Database schema modifiers" do
|
|
193
193
|
@ds.columns!.should == [:number]
|
194
194
|
end
|
195
195
|
|
196
|
+
specify "should handle combination of default, unique, and not null" do
|
197
|
+
@db.create_table!(:items){Integer :number, :default=>0, :null=>false, :unique=>true}
|
198
|
+
@db.table_exists?(:items).should == true
|
199
|
+
@db.schema(:items, :reload=>true).map{|x| x.last}.first.values_at(:ruby_default, :allow_null).should == [0, false]
|
200
|
+
@ds.insert([10])
|
201
|
+
end
|
202
|
+
|
196
203
|
specify "should handle foreign keys correctly when creating tables" do
|
197
204
|
@db.create_table!(:items) do
|
198
205
|
primary_key :id
|
@@ -16,7 +16,20 @@ def clear_sqls
|
|
16
16
|
$sqls.clear
|
17
17
|
end
|
18
18
|
|
19
|
-
|
19
|
+
unless defined?(RSpec)
|
20
|
+
module Spec::Matchers
|
21
|
+
class BeWithin
|
22
|
+
include Spec::Matchers
|
23
|
+
def initialize(delta); @delta = delta; end
|
24
|
+
def of(expected); be_close(expected, @delta); end
|
25
|
+
end
|
26
|
+
def be_within(delta)
|
27
|
+
BeWithin.new(delta)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
(defined?(RSpec) ? RSpec::Core::ExampleGroup : Spec::Example::ExampleGroup).class_eval do
|
20
33
|
def log
|
21
34
|
begin
|
22
35
|
INTEGRATION_DB.loggers << Logger.new(STDOUT)
|
@@ -7,7 +7,7 @@ describe "Sequel timezone support" do
|
|
7
7
|
@db[:t].insert(t)
|
8
8
|
t2 = @db[:t].single_value
|
9
9
|
t2 = Sequel.database_to_application_timestamp(t2.to_s) unless t2.is_a?(Time)
|
10
|
-
(t2 - t).should
|
10
|
+
(t2 - t).should be_within(2).of(0)
|
11
11
|
t2.utc_offset.should == 0 if Sequel.application_timezone == :utc
|
12
12
|
t2.utc_offset.should == t.getlocal.utc_offset if Sequel.application_timezone == :local
|
13
13
|
@db[:t].delete
|
@@ -20,7 +20,7 @@ describe "Sequel timezone support" do
|
|
20
20
|
@db[:t].insert(dt)
|
21
21
|
dt2 = @db[:t].single_value
|
22
22
|
dt2 = Sequel.database_to_application_timestamp(dt2.to_s) unless dt2.is_a?(DateTime)
|
23
|
-
(dt2 - dt).should
|
23
|
+
(dt2 - dt).should be_within(0.00002).of(0)
|
24
24
|
dt2.offset.should == 0 if Sequel.application_timezone == :utc
|
25
25
|
dt2.offset.should == dt.offset if Sequel.application_timezone == :local
|
26
26
|
@db[:t].delete
|
@@ -37,13 +37,13 @@ describe "Sequel timezone support" do
|
|
37
37
|
Sequel.datetime_class = Time
|
38
38
|
end
|
39
39
|
|
40
|
-
cspecify "should support using UTC for database storage and local time for the application", [:swift], [:do, proc{|db| db.database_type != :sqlite}] do
|
40
|
+
cspecify "should support using UTC for database storage and local time for the application", [:swift], [:tinytds], [:do, proc{|db| db.database_type != :sqlite}] do
|
41
41
|
Sequel.database_timezone = :utc
|
42
42
|
Sequel.application_timezone = :local
|
43
43
|
test_timezone
|
44
44
|
end
|
45
45
|
|
46
|
-
cspecify "should support using local time for database storage and UTC for the application", [:swift], [:do, proc{|db| db.database_type != :sqlite}] do
|
46
|
+
cspecify "should support using local time for database storage and UTC for the application", [:swift], [:tinytds], [:do, proc{|db| db.database_type != :sqlite}] do
|
47
47
|
Sequel.database_timezone = :local
|
48
48
|
Sequel.application_timezone = :utc
|
49
49
|
test_timezone
|
@@ -79,7 +79,7 @@ describe "Supported types" do
|
|
79
79
|
ds.first[:tim].strftime('%Y%m%d%H%M%S').should == t.strftime('%Y%m%d%H%M%S')
|
80
80
|
end
|
81
81
|
|
82
|
-
cspecify "should support generic file type", [:do], [:odbc, :mssql], [:mysql2], [:swift] do
|
82
|
+
cspecify "should support generic file type", [:do], [:odbc, :mssql], [:mysql2], [:swift], [:tinytds] do
|
83
83
|
ds = create_items_table_with_column(:name, File)
|
84
84
|
ds.insert(:name => ("a\0"*300).to_sequel_blob)
|
85
85
|
ds.all.should == [{:name=>("a\0"*300).to_sequel_blob}]
|
data/spec/model/model_spec.rb
CHANGED
@@ -511,7 +511,7 @@ describe Sequel::Model, ".[]" do
|
|
511
511
|
end
|
512
512
|
end
|
513
513
|
|
514
|
-
|
514
|
+
describe "Model#inspect" do
|
515
515
|
before do
|
516
516
|
@o = Sequel::Model.load(:x => 333)
|
517
517
|
end
|
@@ -521,7 +521,7 @@ context "Model#inspect" do
|
|
521
521
|
end
|
522
522
|
end
|
523
523
|
|
524
|
-
|
524
|
+
describe "Model.db_schema" do
|
525
525
|
before do
|
526
526
|
@c = Class.new(Sequel::Model(:items)) do
|
527
527
|
def self.columns; orig_columns; end
|
@@ -618,7 +618,7 @@ context "Model.db_schema" do
|
|
618
618
|
end
|
619
619
|
end
|
620
620
|
|
621
|
-
|
621
|
+
describe "Model#use_transactions" do
|
622
622
|
before do
|
623
623
|
@c = Class.new(Sequel::Model(:items))
|
624
624
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 83
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
|
-
-
|
8
|
+
- 21
|
9
9
|
- 0
|
10
|
-
version: 3.
|
10
|
+
version: 3.21.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeremy Evans
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-03-01 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -84,6 +84,7 @@ extra_rdoc_files:
|
|
84
84
|
- doc/release_notes/3.18.0.txt
|
85
85
|
- doc/release_notes/3.19.0.txt
|
86
86
|
- doc/release_notes/3.20.0.txt
|
87
|
+
- doc/release_notes/3.21.0.txt
|
87
88
|
files:
|
88
89
|
- MIT-LICENSE
|
89
90
|
- CHANGELOG
|
@@ -135,6 +136,7 @@ files:
|
|
135
136
|
- doc/release_notes/3.18.0.txt
|
136
137
|
- doc/release_notes/3.19.0.txt
|
137
138
|
- doc/release_notes/3.20.0.txt
|
139
|
+
- doc/release_notes/3.21.0.txt
|
138
140
|
- doc/sharding.rdoc
|
139
141
|
- doc/sql.rdoc
|
140
142
|
- doc/virtual_rows.rdoc
|
@@ -213,6 +215,7 @@ files:
|
|
213
215
|
- spec/extensions/tree_spec.rb
|
214
216
|
- spec/extensions/xml_serializer_spec.rb
|
215
217
|
- spec/extensions/to_dot_spec.rb
|
218
|
+
- spec/extensions/association_autoreloading_spec.rb
|
216
219
|
- spec/integration/associations_test.rb
|
217
220
|
- spec/integration/database_test.rb
|
218
221
|
- spec/integration/dataset_test.rb
|
@@ -321,6 +324,7 @@ files:
|
|
321
324
|
- lib/sequel/adapters/swift/mysql.rb
|
322
325
|
- lib/sequel/adapters/swift/postgres.rb
|
323
326
|
- lib/sequel/adapters/swift/sqlite.rb
|
327
|
+
- lib/sequel/adapters/tinytds.rb
|
324
328
|
- lib/sequel/connection_pool.rb
|
325
329
|
- lib/sequel/connection_pool/sharded_single.rb
|
326
330
|
- lib/sequel/connection_pool/sharded_threaded.rb
|
@@ -405,6 +409,7 @@ files:
|
|
405
409
|
- lib/sequel/plugins/list.rb
|
406
410
|
- lib/sequel/plugins/tree.rb
|
407
411
|
- lib/sequel/plugins/xml_serializer.rb
|
412
|
+
- lib/sequel/plugins/association_autoreloading.rb
|
408
413
|
- lib/sequel/sql.rb
|
409
414
|
- lib/sequel/timezones.rb
|
410
415
|
- lib/sequel/version.rb
|