sequel 3.2.0 → 3.3.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.
- 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
|