rdbi-driver-sqlite3 0.9.0 → 0.9.1
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/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/rdbi-driver-sqlite3.rb +2 -0
- data/lib/rdbi/driver/sqlite3.rb +43 -27
- data/rdbi-driver-sqlite3.gemspec +17 -18
- data/test/test_database.rb +3 -41
- metadata +8 -18
- data/.gitignore +0 -24
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.1
|
data/lib/rdbi/driver/sqlite3.rb
CHANGED
@@ -2,7 +2,6 @@ require 'rdbi'
|
|
2
2
|
require 'epoxy'
|
3
3
|
require 'methlab'
|
4
4
|
|
5
|
-
gem 'sqlite3-ruby', '= 1.3.1'
|
6
5
|
require 'sqlite3'
|
7
6
|
|
8
7
|
class RDBI::Driver::SQLite3 < RDBI::Driver
|
@@ -130,6 +129,7 @@ class RDBI::Driver::SQLite3 < RDBI::Driver
|
|
130
129
|
end
|
131
130
|
|
132
131
|
def result_count
|
132
|
+
return 0 unless rewindable_result
|
133
133
|
coerce_to_array
|
134
134
|
@array_handle.size
|
135
135
|
end
|
@@ -153,14 +153,24 @@ class RDBI::Driver::SQLite3 < RDBI::Driver
|
|
153
153
|
end
|
154
154
|
|
155
155
|
def rest
|
156
|
-
|
157
|
-
|
158
|
-
|
156
|
+
if rewindable_result
|
157
|
+
rewind
|
158
|
+
coerce_to_array
|
159
|
+
oindex, @index = @index, @array_handle.size
|
160
|
+
@array_handle[oindex, @index]
|
161
|
+
else
|
162
|
+
@handle.to_a
|
163
|
+
end
|
159
164
|
end
|
160
165
|
|
161
166
|
def all
|
162
|
-
|
163
|
-
|
167
|
+
if rewindable_result
|
168
|
+
rewind
|
169
|
+
coerce_to_array
|
170
|
+
@array_handle
|
171
|
+
else
|
172
|
+
@handle.to_a
|
173
|
+
end
|
164
174
|
end
|
165
175
|
|
166
176
|
def [](index)
|
@@ -177,6 +187,8 @@ class RDBI::Driver::SQLite3 < RDBI::Driver
|
|
177
187
|
end
|
178
188
|
|
179
189
|
def rewind
|
190
|
+
# FIXME better exception
|
191
|
+
raise StandardError, "rewindable_result is not true" unless rewindable_result
|
180
192
|
@index = 0
|
181
193
|
@handle.reset unless @handle.closed?
|
182
194
|
end
|
@@ -191,8 +203,10 @@ class RDBI::Driver::SQLite3 < RDBI::Driver
|
|
191
203
|
end
|
192
204
|
|
193
205
|
def coerce_to_array
|
194
|
-
unless @
|
206
|
+
unless @coerced
|
207
|
+
rewind
|
195
208
|
@array_handle = @handle.to_a
|
209
|
+
@coerced = true
|
196
210
|
end
|
197
211
|
end
|
198
212
|
end
|
@@ -202,6 +216,16 @@ class RDBI::Driver::SQLite3 < RDBI::Driver
|
|
202
216
|
|
203
217
|
attr_accessor :handle
|
204
218
|
|
219
|
+
class << self
|
220
|
+
def input_type_map
|
221
|
+
@input_type_map ||= RDBI::Type.create_type_hash(RDBI::Type::In)
|
222
|
+
end
|
223
|
+
|
224
|
+
def output_type_map
|
225
|
+
@output_type_map ||= RDBI::Type.create_type_hash(RDBI::Type::Out)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
205
229
|
def initialize(query, dbh)
|
206
230
|
super
|
207
231
|
|
@@ -214,25 +238,22 @@ class RDBI::Driver::SQLite3 < RDBI::Driver
|
|
214
238
|
query = ep.quote(@index_map.compact.inject({}) { |x,y| x.merge({ y => nil }) }) { '?' }
|
215
239
|
|
216
240
|
@handle = check_exception { dbh.handle.prepare(query) }
|
217
|
-
@input_type_map =
|
218
|
-
@output_type_map =
|
241
|
+
@input_type_map = self.class.input_type_map
|
242
|
+
@output_type_map = self.class.output_type_map
|
243
|
+
|
244
|
+
prep_finalizer { @handle.close unless @handle.closed? }
|
219
245
|
end
|
220
246
|
|
221
|
-
def
|
247
|
+
def new_modification(*binds)
|
248
|
+
binds = RDBI::Util.index_binds(binds, @index_map)
|
222
249
|
|
223
|
-
|
224
|
-
# code.
|
225
|
-
|
226
|
-
# FIXME move to RDBI::Util or something.
|
227
|
-
hashes, binds = binds.partition { |x| x.kind_of?(Hash) }
|
228
|
-
hash = hashes.inject({}) { |x, y| x.merge(y) }
|
229
|
-
hash.keys.each do |key|
|
230
|
-
if index = @index_map.index(key)
|
231
|
-
binds.insert(index, hash[key])
|
232
|
-
end
|
233
|
-
end
|
250
|
+
rs = check_exception { @handle.execute(*binds) }
|
234
251
|
|
235
|
-
|
252
|
+
return 0
|
253
|
+
end
|
254
|
+
|
255
|
+
def new_execution(*binds)
|
256
|
+
binds = RDBI::Util.index_binds(binds, @index_map)
|
236
257
|
|
237
258
|
rs = check_exception { @handle.execute(*binds) }
|
238
259
|
|
@@ -252,11 +273,6 @@ class RDBI::Driver::SQLite3 < RDBI::Driver
|
|
252
273
|
return Cursor.new(rs), this_schema, @output_type_map
|
253
274
|
end
|
254
275
|
|
255
|
-
def finish
|
256
|
-
@handle.close rescue nil
|
257
|
-
super
|
258
|
-
end
|
259
|
-
|
260
276
|
protected
|
261
277
|
|
262
278
|
def check_exception(&block)
|
data/rdbi-driver-sqlite3.gemspec
CHANGED
@@ -1,41 +1,40 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rdbi-driver-sqlite3}
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Erik Hollensbe"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-12-10}
|
13
13
|
s.description = %q{sqlite3 driver for RDBI}
|
14
14
|
s.email = %q{erik@hollensbe.org}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
"LICENSE",
|
22
|
+
"README.rdoc",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"lib/rdbi-driver-sqlite3.rb",
|
26
|
+
"lib/rdbi/driver/sqlite3.rb",
|
27
|
+
"rdbi-driver-sqlite3.gemspec",
|
28
|
+
"test/helper.rb",
|
29
|
+
"test/test_database.rb"
|
30
30
|
]
|
31
31
|
s.homepage = %q{http://github.com/RDBI/rdbi-driver-sqlite3}
|
32
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
33
32
|
s.require_paths = ["lib"]
|
34
33
|
s.rubygems_version = %q{1.3.7}
|
35
34
|
s.summary = %q{sqlite3 driver for RDBI}
|
36
35
|
s.test_files = [
|
37
36
|
"test/helper.rb",
|
38
|
-
|
37
|
+
"test/test_database.rb"
|
39
38
|
]
|
40
39
|
|
41
40
|
if s.respond_to? :specification_version then
|
@@ -46,14 +45,14 @@ Gem::Specification.new do |s|
|
|
46
45
|
s.add_development_dependency(%q<test-unit>, [">= 0"])
|
47
46
|
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
48
47
|
s.add_runtime_dependency(%q<rdbi>, [">= 0"])
|
49
|
-
s.add_runtime_dependency(%q<sqlite3-ruby>, ["
|
48
|
+
s.add_runtime_dependency(%q<sqlite3-ruby>, ["~> 1.3"])
|
50
49
|
s.add_runtime_dependency(%q<methlab>, [">= 0"])
|
51
50
|
s.add_runtime_dependency(%q<epoxy>, [">= 0.3.1"])
|
52
51
|
else
|
53
52
|
s.add_dependency(%q<test-unit>, [">= 0"])
|
54
53
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
55
54
|
s.add_dependency(%q<rdbi>, [">= 0"])
|
56
|
-
s.add_dependency(%q<sqlite3-ruby>, ["
|
55
|
+
s.add_dependency(%q<sqlite3-ruby>, ["~> 1.3"])
|
57
56
|
s.add_dependency(%q<methlab>, [">= 0"])
|
58
57
|
s.add_dependency(%q<epoxy>, [">= 0.3.1"])
|
59
58
|
end
|
@@ -61,7 +60,7 @@ Gem::Specification.new do |s|
|
|
61
60
|
s.add_dependency(%q<test-unit>, [">= 0"])
|
62
61
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
63
62
|
s.add_dependency(%q<rdbi>, [">= 0"])
|
64
|
-
s.add_dependency(%q<sqlite3-ruby>, ["
|
63
|
+
s.add_dependency(%q<sqlite3-ruby>, ["~> 1.3"])
|
65
64
|
s.add_dependency(%q<methlab>, [">= 0"])
|
66
65
|
s.add_dependency(%q<epoxy>, [">= 0.3.1"])
|
67
66
|
end
|
data/test/test_database.rb
CHANGED
@@ -226,43 +226,7 @@ class TestDatabase < Test::Unit::TestCase
|
|
226
226
|
sth.finish
|
227
227
|
end
|
228
228
|
|
229
|
-
def
|
230
|
-
self.dbh = init_database
|
231
|
-
sth = dbh.prepare("insert into multi_fields (foo, bar) values (?, ?)")
|
232
|
-
sth.execute(1, "foo")
|
233
|
-
sth.execute(2, "bar")
|
234
|
-
sth.finish
|
235
|
-
|
236
|
-
sth = dbh.prepare("select foo, bar from multi_fields")
|
237
|
-
res = sth.execute
|
238
|
-
|
239
|
-
assert(res)
|
240
|
-
|
241
|
-
assert_equal(2, res.fetch(:all).length)
|
242
|
-
assert_equal(2, res.fetch(:all)[0].length)
|
243
|
-
|
244
|
-
assert_equal([1, "foo"], res.fetch(1)[0])
|
245
|
-
assert_equal([2, "bar"], res.fetch(1)[0])
|
246
|
-
sth.finish
|
247
|
-
|
248
|
-
res = dbh.execute("select foo, bar from multi_fields where foo = ? and bar = ?bar", 1, { :bar => "foo" })
|
249
|
-
assert(res)
|
250
|
-
assert_equal([[1, "foo"]], res.fetch(:all))
|
251
|
-
|
252
|
-
res = dbh.execute("select foo, bar from multi_fields where foo = ? and bar = ?bar", { :bar => "foo" }, 1)
|
253
|
-
assert(res)
|
254
|
-
assert_equal([[1, "foo"]], res.fetch(:all))
|
255
|
-
|
256
|
-
res = dbh.execute("select foo, bar from multi_fields where foo = ?foo and bar = ?bar", { :foo => 1, :bar => "foo" })
|
257
|
-
assert(res)
|
258
|
-
assert_equal([[1, "foo"]], res.fetch(:all))
|
259
|
-
|
260
|
-
res = dbh.execute("select foo, bar from multi_fields where foo = ?foo and bar = ?", { :foo => 1 }, "foo")
|
261
|
-
assert(res)
|
262
|
-
assert_equal([[1, "foo"]], res.fetch(:all))
|
263
|
-
end
|
264
|
-
|
265
|
-
def test_13_reconnection
|
229
|
+
def test_12_reconnection
|
266
230
|
self.dbh = init_database
|
267
231
|
|
268
232
|
assert_nothing_raised do
|
@@ -272,13 +236,11 @@ class TestDatabase < Test::Unit::TestCase
|
|
272
236
|
end
|
273
237
|
|
274
238
|
sth = dbh.prepare("select 1")
|
275
|
-
$stderr.puts "You should see the next warning exactly once"
|
276
|
-
dbh.reconnect
|
277
|
-
dbh.disconnect
|
278
239
|
dbh.reconnect
|
240
|
+
assert sth.finished?
|
279
241
|
end
|
280
242
|
|
281
|
-
def
|
243
|
+
def test_13_aggregates
|
282
244
|
self.dbh = init_database
|
283
245
|
|
284
246
|
res = dbh.execute("select count(*) from multi_fields")
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdbi-driver-sqlite3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 59
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
8
|
+
- 1
|
9
|
+
version: 0.9.1
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Erik Hollensbe
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-12-10 00:00:00 -05:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -40,7 +38,6 @@ dependencies:
|
|
40
38
|
requirements:
|
41
39
|
- - ">="
|
42
40
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
41
|
segments:
|
45
42
|
- 0
|
46
43
|
version: "0"
|
@@ -54,7 +51,6 @@ dependencies:
|
|
54
51
|
requirements:
|
55
52
|
- - ">="
|
56
53
|
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
54
|
segments:
|
59
55
|
- 0
|
60
56
|
version: "0"
|
@@ -66,14 +62,12 @@ dependencies:
|
|
66
62
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
63
|
none: false
|
68
64
|
requirements:
|
69
|
-
- -
|
65
|
+
- - ~>
|
70
66
|
- !ruby/object:Gem::Version
|
71
|
-
hash: 25
|
72
67
|
segments:
|
73
68
|
- 1
|
74
69
|
- 3
|
75
|
-
|
76
|
-
version: 1.3.1
|
70
|
+
version: "1.3"
|
77
71
|
type: :runtime
|
78
72
|
version_requirements: *id004
|
79
73
|
- !ruby/object:Gem::Dependency
|
@@ -84,7 +78,6 @@ dependencies:
|
|
84
78
|
requirements:
|
85
79
|
- - ">="
|
86
80
|
- !ruby/object:Gem::Version
|
87
|
-
hash: 3
|
88
81
|
segments:
|
89
82
|
- 0
|
90
83
|
version: "0"
|
@@ -98,7 +91,6 @@ dependencies:
|
|
98
91
|
requirements:
|
99
92
|
- - ">="
|
100
93
|
- !ruby/object:Gem::Version
|
101
|
-
hash: 17
|
102
94
|
segments:
|
103
95
|
- 0
|
104
96
|
- 3
|
@@ -117,11 +109,11 @@ extra_rdoc_files:
|
|
117
109
|
- README.rdoc
|
118
110
|
files:
|
119
111
|
- .document
|
120
|
-
- .gitignore
|
121
112
|
- LICENSE
|
122
113
|
- README.rdoc
|
123
114
|
- Rakefile
|
124
115
|
- VERSION
|
116
|
+
- lib/rdbi-driver-sqlite3.rb
|
125
117
|
- lib/rdbi/driver/sqlite3.rb
|
126
118
|
- rdbi-driver-sqlite3.gemspec
|
127
119
|
- test/helper.rb
|
@@ -131,8 +123,8 @@ homepage: http://github.com/RDBI/rdbi-driver-sqlite3
|
|
131
123
|
licenses: []
|
132
124
|
|
133
125
|
post_install_message:
|
134
|
-
rdoc_options:
|
135
|
-
|
126
|
+
rdoc_options: []
|
127
|
+
|
136
128
|
require_paths:
|
137
129
|
- lib
|
138
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -140,7 +132,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
132
|
requirements:
|
141
133
|
- - ">="
|
142
134
|
- !ruby/object:Gem::Version
|
143
|
-
hash: 3
|
144
135
|
segments:
|
145
136
|
- 0
|
146
137
|
version: "0"
|
@@ -149,7 +140,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
140
|
requirements:
|
150
141
|
- - ">="
|
151
142
|
- !ruby/object:Gem::Version
|
152
|
-
hash: 3
|
153
143
|
segments:
|
154
144
|
- 0
|
155
145
|
version: "0"
|
data/.gitignore
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
## MAC OS
|
2
|
-
.DS_Store
|
3
|
-
|
4
|
-
## TEXTMATE
|
5
|
-
*.tmproj
|
6
|
-
tmtags
|
7
|
-
|
8
|
-
## EMACS
|
9
|
-
*~
|
10
|
-
\#*
|
11
|
-
.\#*
|
12
|
-
|
13
|
-
## VIM
|
14
|
-
*.swp
|
15
|
-
|
16
|
-
## PROJECT::GENERAL
|
17
|
-
coverage
|
18
|
-
rdoc
|
19
|
-
pkg
|
20
|
-
doc
|
21
|
-
.yardoc
|
22
|
-
rdbi-dbd-sqlite3.gemspec
|
23
|
-
|
24
|
-
## PROJECT::SPECIFIC
|