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.
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