sequel 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +40 -0
- data/Rakefile +1 -1
- data/doc/opening_databases.rdoc +7 -0
- data/doc/release_notes/3.3.0.txt +192 -0
- data/lib/sequel/adapters/ado.rb +34 -39
- data/lib/sequel/adapters/ado/mssql.rb +30 -0
- data/lib/sequel/adapters/jdbc.rb +27 -4
- data/lib/sequel/adapters/jdbc/h2.rb +14 -3
- data/lib/sequel/adapters/jdbc/mssql.rb +51 -0
- data/lib/sequel/adapters/mysql.rb +28 -12
- data/lib/sequel/adapters/odbc.rb +36 -30
- data/lib/sequel/adapters/odbc/mssql.rb +44 -0
- data/lib/sequel/adapters/shared/mssql.rb +185 -10
- data/lib/sequel/adapters/shared/mysql.rb +9 -9
- data/lib/sequel/adapters/shared/sqlite.rb +45 -47
- data/lib/sequel/connection_pool.rb +8 -5
- data/lib/sequel/core.rb +2 -8
- data/lib/sequel/database.rb +9 -10
- data/lib/sequel/database/schema_sql.rb +3 -2
- data/lib/sequel/dataset.rb +1 -0
- data/lib/sequel/dataset/sql.rb +15 -6
- data/lib/sequel/extensions/schema_dumper.rb +7 -7
- data/lib/sequel/model/associations.rb +16 -14
- data/lib/sequel/model/base.rb +25 -7
- data/lib/sequel/plugins/association_proxies.rb +41 -0
- data/lib/sequel/plugins/many_through_many.rb +0 -1
- data/lib/sequel/sql.rb +8 -11
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/mysql_spec.rb +42 -38
- data/spec/adapters/sqlite_spec.rb +0 -4
- data/spec/core/database_spec.rb +22 -1
- data/spec/core/dataset_spec.rb +37 -12
- data/spec/core/expression_filters_spec.rb +5 -0
- data/spec/core/schema_spec.rb +15 -8
- data/spec/extensions/association_proxies_spec.rb +47 -0
- data/spec/extensions/caching_spec.rb +2 -2
- data/spec/extensions/hook_class_methods_spec.rb +6 -6
- data/spec/extensions/many_through_many_spec.rb +13 -0
- data/spec/extensions/schema_dumper_spec.rb +12 -4
- data/spec/extensions/validation_class_methods_spec.rb +3 -3
- data/spec/integration/dataset_test.rb +47 -17
- data/spec/integration/prepared_statement_test.rb +5 -5
- data/spec/integration/schema_test.rb +111 -34
- data/spec/model/associations_spec.rb +128 -11
- data/spec/model/hooks_spec.rb +7 -6
- data/spec/model/model_spec.rb +54 -4
- data/spec/model/record_spec.rb +2 -3
- data/spec/model/validations_spec.rb +4 -4
- metadata +109 -101
- data/spec/adapters/ado_spec.rb +0 -93
data/spec/adapters/ado_spec.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
2
|
-
|
3
|
-
unless defined?(ADO_DB)
|
4
|
-
ADO_DB = Sequel.ado(:host => 'MY_SQL_SERVER', :database => 'MyDB', :user => 'my_usr', :password => 'my_pwd')
|
5
|
-
end
|
6
|
-
INTEGRATION_DB = ADO_DB unless defined?(INTEGRATION_DB)
|
7
|
-
|
8
|
-
context "An ADO dataset" do
|
9
|
-
before(:each) do
|
10
|
-
ADO_DB.create_table!(:items) { text :name }
|
11
|
-
end
|
12
|
-
|
13
|
-
specify "should not raise exceptions when working with empty datasets" do
|
14
|
-
lambda {
|
15
|
-
ADO_DB[:items].all
|
16
|
-
}.should_not raise_error
|
17
|
-
end
|
18
|
-
|
19
|
-
describe 'setting the :command_timeout option' do
|
20
|
-
before(:each) do
|
21
|
-
@conn_options = {:host => 'MY_SQL_SERVER',
|
22
|
-
:database => 'MyDB',
|
23
|
-
:user => 'my_usr',
|
24
|
-
:password => 'my_pwd',
|
25
|
-
:command_timeout => 120}
|
26
|
-
end
|
27
|
-
|
28
|
-
specify 'it should set the CommandTimeout parameter on the ADO handle' do
|
29
|
-
db = Sequel::ADO::Database.new(@conn_options)
|
30
|
-
db.connect(@conn_options).CommandTimeout.should == 120
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe 'when the :command_timeout option is not implicitly set' do
|
35
|
-
before(:each) do
|
36
|
-
@conn_options = {:host => 'MY_SQL_SERVER',
|
37
|
-
:database => 'MyDB',
|
38
|
-
:user => 'my_usr',
|
39
|
-
:password => 'my_pwd'}
|
40
|
-
end
|
41
|
-
|
42
|
-
specify 'it should remain as the default of 30 seconds' do
|
43
|
-
db = Sequel::ADO::Database.new(@conn_options)
|
44
|
-
db.connect(@conn_options).CommandTimeout.should == 30
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe 'setting the :provider option' do
|
49
|
-
before(:each) do
|
50
|
-
@conn_options = {:host => 'MY_SQL_SERVER',
|
51
|
-
:database => 'MyDB',
|
52
|
-
:user => 'my_usr',
|
53
|
-
:password => 'my_pwd',
|
54
|
-
:provider => "SQLOLEDB"}
|
55
|
-
end
|
56
|
-
|
57
|
-
specify 'it should set the CommandTimeout parameter on the ADO handle' do
|
58
|
-
db = Sequel::ADO::Database.new(@conn_options)
|
59
|
-
db.connect(@conn_options).Provider.should match /sqloledb/i
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
context "An MSSQL dataset" do
|
67
|
-
before(:each) do
|
68
|
-
ADO_DB.create_table!(:items) { text :name }
|
69
|
-
end
|
70
|
-
|
71
|
-
specify "should assign a default name to anonymous columns" do
|
72
|
-
col = ADO_DB.fetch('SELECT COUNT(*) FROM items').columns[0]
|
73
|
-
col.to_s.should == '(no column name)'
|
74
|
-
end
|
75
|
-
|
76
|
-
specify "should support counting" do
|
77
|
-
ADO_DB[:items] << {:name => 'my name' }
|
78
|
-
ADO_DB[:items].count.should == 1
|
79
|
-
end
|
80
|
-
|
81
|
-
specify "should support first" do
|
82
|
-
ADO_DB[:items] << {:name => 'x' }
|
83
|
-
ADO_DB[:items] << {:name => 'y' }
|
84
|
-
ADO_DB[:items].first[:name].should == 'x'
|
85
|
-
end
|
86
|
-
|
87
|
-
specify "should support limit" do
|
88
|
-
3.times do
|
89
|
-
ADO_DB[:items] << {:name => 'my name' }
|
90
|
-
end
|
91
|
-
ADO_DB[:items].limit(2).all.size.should == 2
|
92
|
-
end
|
93
|
-
end
|