data_objects 0.10.8 → 0.10.9

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.markdown CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.10.9 2012-08-13
2
+
3
+ * Don't try to escape queries when no binding parameters are given
4
+
1
5
  ## 0.10.8 2012-02-10
2
6
 
3
7
  * Ruby 1.9.3 compatibility on Windows
@@ -52,6 +52,7 @@ module DataObjects
52
52
  # This method is meant mostly for adapters that don't support
53
53
  # bind-parameters.
54
54
  def escape_sql(args)
55
+ return @text if args.empty?
55
56
  sql = @text.dup
56
57
  vars = args.dup
57
58
 
@@ -7,9 +7,11 @@ shared_examples_for 'a Command' do
7
7
  end
8
8
 
9
9
  before do
10
- @connection = DataObjects::Connection.new(CONFIG.uri)
11
- @command = @connection.create_command("INSERT INTO users (name) VALUES (?)")
12
- @reader = @connection.create_command("SELECT code, name FROM widgets WHERE ad_description = ?")
10
+ @connection = DataObjects::Connection.new(CONFIG.uri)
11
+ @command = @connection.create_command("INSERT INTO users (name) VALUES (?)")
12
+ @reader = @connection.create_command("SELECT code, name FROM widgets WHERE ad_description = ?")
13
+ @arg_command = @connection.create_command("INSERT INTO users (name, fired_at) VALUES (?, ?)")
14
+ @arg_reader = @connection.create_command("SELECT code, name FROM widgets WHERE ad_description = ? AND whitepaper_text = ?")
13
15
  end
14
16
 
15
17
  after do
@@ -32,14 +34,14 @@ shared_examples_for 'a Command' do
32
34
  expect { @invalid_command.execute_non_query }.to raise_error(DataObjects::SQLError)
33
35
  end
34
36
 
35
- it 'should raise an error with too few binding parameters' do
36
- expect { @command.execute_non_query("Too", "Many") }.to raise_error(ArgumentError,
37
- /Binding mismatch: 2 for 1/)
37
+ it 'should raise an error with too many binding parameters' do
38
+ expect { @arg_command.execute_non_query("Too", Date.today, "Many") }.to raise_error(ArgumentError,
39
+ /Binding mismatch: 3 for 2/)
38
40
  end
39
41
 
40
- it 'should raise an error with too many binding parameters' do
41
- expect { @command.execute_non_query }.to raise_error(ArgumentError,
42
- /Binding mismatch: 0 for 1/)
42
+ it 'should raise an error with too few binding parameters' do
43
+ expect { @arg_command.execute_non_query("Few") }.to raise_error(ArgumentError,
44
+ /Binding mismatch: 1 for 2/)
43
45
  end
44
46
 
45
47
  end
@@ -47,7 +49,7 @@ shared_examples_for 'a Command' do
47
49
  describe 'with a valid statement' do
48
50
 
49
51
  it 'should not raise an error with an explicit nil as parameter' do
50
- expect { @command.execute_non_query(nil) }.not_to raise_error(ArgumentError)
52
+ expect { @arg_command.execute_non_query(nil, nil) }.not_to raise_error(ArgumentError)
51
53
  end
52
54
 
53
55
  end
@@ -73,7 +75,7 @@ shared_examples_for 'a Command' do
73
75
  describe 'with an invalid reader' do
74
76
 
75
77
  before do
76
- @invalid_reader = @connection.create_command("SELECT * FROM non_existent_widgets WHERE ad_description = ?")
78
+ @invalid_reader = @connection.create_command("SELECT * FROM non_existent_widgets WHERE ad_description = ? AND white_paper_text = ?")
77
79
  end
78
80
 
79
81
  it 'should raise an error on an invalid query' do
@@ -81,14 +83,14 @@ shared_examples_for 'a Command' do
81
83
  expect { @invalid_reader.execute_reader }.to raise_error # (ArgumentError, DataObjects::SQLError)
82
84
  end
83
85
 
84
- it 'should raise an error with too few binding parameters' do
85
- expect { @reader.execute_reader("Too", "Many") }.to raise_error(ArgumentError,
86
- /Binding mismatch: 2 for 1/)
86
+ it 'should raise an error with too many few binding parameters' do
87
+ expect { @arg_reader.execute_reader("Too", "Many", "Args") }.to raise_error(ArgumentError,
88
+ /Binding mismatch: 3 for 2/)
87
89
  end
88
90
 
89
- it 'should raise an error with too many binding parameters' do
90
- expect { @reader.execute_reader }.to raise_error(ArgumentError,
91
- /Binding mismatch: 0 for 1/)
91
+ it 'should raise an error with too few binding parameters' do
92
+ expect { @arg_reader.execute_reader("Few") }.to raise_error(ArgumentError,
93
+ /Binding mismatch: 1 for 2/)
92
94
  end
93
95
 
94
96
  end
@@ -96,7 +98,7 @@ shared_examples_for 'a Command' do
96
98
  describe 'with a valid reader' do
97
99
 
98
100
  it 'should not raise an error with an explicit nil as parameter' do
99
- expect { @reader.execute_reader(nil) }.not_to raise_error(ArgumentError)
101
+ expect { @arg_reader.execute_reader(nil, nil) }.not_to raise_error(ArgumentError)
100
102
  end
101
103
 
102
104
  end
@@ -127,7 +129,7 @@ shared_examples_for 'a Command' do
127
129
  end
128
130
 
129
131
  it 'should raise an error when types are set' do
130
- expect { @command.execute_non_query }.to raise_error(ArgumentError)
132
+ expect { @arg_command.execute_non_query("Few") }.to raise_error(ArgumentError)
131
133
  end
132
134
 
133
135
  end
@@ -1,3 +1,13 @@
1
+ def test_connection(conn)
2
+ reader = conn.create_command(CONFIG.testsql || "SELECT 1").execute_reader
3
+ reader.next!
4
+ result = reader.values[0]
5
+ result
6
+ ensure
7
+ reader.close
8
+ conn.close
9
+ end
10
+
1
11
  shared_examples_for 'a Connection' do
2
12
 
3
13
  before :all do
@@ -25,21 +35,15 @@ shared_examples_for 'a Connection' do
25
35
  end
26
36
 
27
37
  describe 'various connection URIs' do
28
- def test_connection(conn)
29
- reader = conn.create_command(CONFIG.testsql || "SELECT 1").execute_reader
30
- reader.next!
31
- reader.values[0]
32
- end
33
38
 
34
39
  it 'should open with an uri object' do
35
40
  uri = DataObjects::URI.new(
36
- @driver,
37
- @user,
38
- @password,
39
- @host,
40
- @port && @port.to_i,
41
- @database,
42
- nil, nil
41
+ :scheme => @driver,
42
+ :user => @user,
43
+ :password => @password,
44
+ :host => @host,
45
+ :port => @port && @port.to_i,
46
+ :path => @database
43
47
  )
44
48
  conn = DataObjects::Connection.new(uri)
45
49
  test_connection(conn).should == 1
@@ -109,10 +113,6 @@ shared_examples_for 'a Connection with authentication support' do
109
113
  lambda { DataObjects::Connection.new(uri) }
110
114
  end
111
115
 
112
- it 'should raise an error if no database specified' do
113
- connecting_with("#{@driver}://#{@user}:#{@password}@#{@host}:#{@port}").should raise_error #(ArgumentError, DataObjects::Error)
114
- end
115
-
116
116
  it 'should raise an error if bad username is given' do
117
117
  connecting_with("#{@driver}://thisreallyshouldntexist:#{@password}@#{@host}:#{@port}#{@database}").should raise_error #(ArgumentError, DataObjects::Error)
118
118
  end
@@ -137,14 +137,13 @@ shared_examples_for 'a Connection with authentication support' do
137
137
 
138
138
  end
139
139
 
140
- def test_connection(conn)
141
- reader = conn.create_command(CONFIG.testsql || "SELECT 1").execute_reader
142
- reader.next!
143
- result = reader.values[0]
144
- result
145
- ensure
146
- reader.close
147
- conn.close
140
+ shared_examples_for 'a Connection allowing default database' do
141
+ describe 'with a URI without a database' do
142
+ it 'should connect properly' do
143
+ conn = DataObjects::Connection.new("#{@driver}://#{@user}:#{@password}@#{@host}:#{@port}")
144
+ test_connection(conn).should == 1
145
+ end
146
+ end
148
147
  end
149
148
 
150
149
  shared_examples_for 'a Connection with JDBC URL support' do
@@ -41,7 +41,7 @@ shared_examples_for 'supporting String' do
41
41
  describe 'with manual typecasting' do
42
42
 
43
43
  before do
44
- @command = @connection.create_command("SELECT weight FROM widgets WHERE ad_description = ?")
44
+ @command = @connection.create_command("SELECT number_sold FROM widgets WHERE ad_description = ?")
45
45
  @command.set_types(String)
46
46
  @reader = @command.execute_reader('Buy this product now!')
47
47
  @reader.next!
@@ -57,7 +57,7 @@ shared_examples_for 'supporting String' do
57
57
  end
58
58
 
59
59
  it 'should return the correct result' do
60
- @values.first.should == "13.4"
60
+ @values.first.should == "0"
61
61
  end
62
62
 
63
63
  end
@@ -1,3 +1,3 @@
1
1
  module DataObjects
2
- VERSION = '0.10.8'
2
+ VERSION = '0.10.9'
3
3
  end
data/spec/pooling_spec.rb CHANGED
@@ -148,7 +148,7 @@ describe "DataObjects::Pooling" do
148
148
  bob = Person.new('Bob')
149
149
  bob.release
150
150
  DataObjects.exiting = true
151
- sleep(0.1)
151
+ sleep(1)
152
152
  DataObjects::Pooling.scavenger?.should be_false
153
153
  end
154
154
 
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_objects
3
3
  version: !ruby/object:Gem::Version
4
- hash: 39
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 10
9
- - 8
10
- version: 0.10.8
8
+ - 9
9
+ version: 0.10.9
11
10
  platform: ruby
12
11
  authors:
13
12
  - Dirkjan Bussink
@@ -15,17 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-03-29 00:00:00 Z
17
+ date: 2011-03-29 00:00:00 +02:00
18
+ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: addressable
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
24
  requirements:
26
25
  - - ~>
27
26
  - !ruby/object:Gem::Version
28
- hash: 1
29
27
  segments:
30
28
  - 2
31
29
  - 1
@@ -36,11 +34,9 @@ dependencies:
36
34
  name: rspec
37
35
  prerelease: false
38
36
  requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
37
  requirements:
41
38
  - - ~>
42
39
  - !ruby/object:Gem::Version
43
- hash: 9
44
40
  segments:
45
41
  - 2
46
42
  - 5
@@ -51,11 +47,9 @@ dependencies:
51
47
  name: yard
52
48
  prerelease: false
53
49
  requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
50
  requirements:
56
51
  - - ~>
57
52
  - !ruby/object:Gem::Version
58
- hash: 1
59
53
  segments:
60
54
  - 0
61
55
  - 5
@@ -135,6 +129,7 @@ files:
135
129
  - tasks/spec.rake
136
130
  - tasks/yard.rake
137
131
  - tasks/yardstick.rake
132
+ has_rdoc: true
138
133
  homepage: http://github.com/datamapper/do
139
134
  licenses: []
140
135
 
@@ -144,27 +139,23 @@ rdoc_options: []
144
139
  require_paths:
145
140
  - lib
146
141
  required_ruby_version: !ruby/object:Gem::Requirement
147
- none: false
148
142
  requirements:
149
143
  - - ">="
150
144
  - !ruby/object:Gem::Version
151
- hash: 3
152
145
  segments:
153
146
  - 0
154
147
  version: "0"
155
148
  required_rubygems_version: !ruby/object:Gem::Requirement
156
- none: false
157
149
  requirements:
158
150
  - - ">="
159
151
  - !ruby/object:Gem::Version
160
- hash: 3
161
152
  segments:
162
153
  - 0
163
154
  version: "0"
164
155
  requirements: []
165
156
 
166
157
  rubyforge_project: dorb
167
- rubygems_version: 1.8.14
158
+ rubygems_version: 1.3.6
168
159
  signing_key:
169
160
  specification_version: 3
170
161
  summary: DataObjects basic API and shared driver specifications