sequel 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/CHANGELOG +40 -0
  2. data/Rakefile +1 -1
  3. data/doc/opening_databases.rdoc +7 -0
  4. data/doc/release_notes/3.3.0.txt +192 -0
  5. data/lib/sequel/adapters/ado.rb +34 -39
  6. data/lib/sequel/adapters/ado/mssql.rb +30 -0
  7. data/lib/sequel/adapters/jdbc.rb +27 -4
  8. data/lib/sequel/adapters/jdbc/h2.rb +14 -3
  9. data/lib/sequel/adapters/jdbc/mssql.rb +51 -0
  10. data/lib/sequel/adapters/mysql.rb +28 -12
  11. data/lib/sequel/adapters/odbc.rb +36 -30
  12. data/lib/sequel/adapters/odbc/mssql.rb +44 -0
  13. data/lib/sequel/adapters/shared/mssql.rb +185 -10
  14. data/lib/sequel/adapters/shared/mysql.rb +9 -9
  15. data/lib/sequel/adapters/shared/sqlite.rb +45 -47
  16. data/lib/sequel/connection_pool.rb +8 -5
  17. data/lib/sequel/core.rb +2 -8
  18. data/lib/sequel/database.rb +9 -10
  19. data/lib/sequel/database/schema_sql.rb +3 -2
  20. data/lib/sequel/dataset.rb +1 -0
  21. data/lib/sequel/dataset/sql.rb +15 -6
  22. data/lib/sequel/extensions/schema_dumper.rb +7 -7
  23. data/lib/sequel/model/associations.rb +16 -14
  24. data/lib/sequel/model/base.rb +25 -7
  25. data/lib/sequel/plugins/association_proxies.rb +41 -0
  26. data/lib/sequel/plugins/many_through_many.rb +0 -1
  27. data/lib/sequel/sql.rb +8 -11
  28. data/lib/sequel/version.rb +1 -1
  29. data/spec/adapters/mysql_spec.rb +42 -38
  30. data/spec/adapters/sqlite_spec.rb +0 -4
  31. data/spec/core/database_spec.rb +22 -1
  32. data/spec/core/dataset_spec.rb +37 -12
  33. data/spec/core/expression_filters_spec.rb +5 -0
  34. data/spec/core/schema_spec.rb +15 -8
  35. data/spec/extensions/association_proxies_spec.rb +47 -0
  36. data/spec/extensions/caching_spec.rb +2 -2
  37. data/spec/extensions/hook_class_methods_spec.rb +6 -6
  38. data/spec/extensions/many_through_many_spec.rb +13 -0
  39. data/spec/extensions/schema_dumper_spec.rb +12 -4
  40. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  41. data/spec/integration/dataset_test.rb +47 -17
  42. data/spec/integration/prepared_statement_test.rb +5 -5
  43. data/spec/integration/schema_test.rb +111 -34
  44. data/spec/model/associations_spec.rb +128 -11
  45. data/spec/model/hooks_spec.rb +7 -6
  46. data/spec/model/model_spec.rb +54 -4
  47. data/spec/model/record_spec.rb +2 -3
  48. data/spec/model/validations_spec.rb +4 -4
  49. metadata +109 -101
  50. data/spec/adapters/ado_spec.rb +0 -93
@@ -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