sqlite3-ruby 1.2.3-x86-mingw32

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.

Potentially problematic release.


This version of sqlite3-ruby might be problematic. Click here for more details.

@@ -0,0 +1,57 @@
1
+ require 'sqlite3/constants'
2
+
3
+ module SQLite3
4
+
5
+ class Value
6
+ attr_reader :handle
7
+
8
+ def initialize( db, handle )
9
+ @driver = db.driver
10
+ @handle = handle
11
+ end
12
+
13
+ def null?
14
+ type == :null
15
+ end
16
+
17
+ def to_blob
18
+ @driver.value_blob( @handle )
19
+ end
20
+
21
+ def length( utf16=false )
22
+ if utf16
23
+ @driver.value_bytes16( @handle )
24
+ else
25
+ @driver.value_bytes( @handle )
26
+ end
27
+ end
28
+
29
+ def to_f
30
+ @driver.value_double( @handle )
31
+ end
32
+
33
+ def to_i
34
+ @driver.value_int( @handle )
35
+ end
36
+
37
+ def to_int64
38
+ @driver.value_int64( @handle )
39
+ end
40
+
41
+ def to_s( utf16=false )
42
+ @driver.value_text( @handle, utf16 )
43
+ end
44
+
45
+ def type
46
+ case @driver.value_type( @handle )
47
+ when Constants::ColumnType::INTEGER then :int
48
+ when Constants::ColumnType::FLOAT then :float
49
+ when Constants::ColumnType::TEXT then :text
50
+ when Constants::ColumnType::BLOB then :blob
51
+ when Constants::ColumnType::NULL then :null
52
+ end
53
+ end
54
+
55
+ end
56
+
57
+ end
@@ -0,0 +1,14 @@
1
+ module SQLite3
2
+
3
+ module Version
4
+
5
+ MAJOR = 1
6
+ MINOR = 2
7
+ TINY = 3
8
+
9
+ STRING = [ MAJOR, MINOR, TINY ].join( "." )
10
+ #:beta-tag:
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,140 @@
1
+ require 'benchmark'
2
+
3
+ N = 1000
4
+
5
+ $VERBOSE=nil
6
+
7
+ puts "file require"
8
+ Benchmark.bm( 7 ) do |x|
9
+ x.report('sqlite') do
10
+ N.times do
11
+ $".delete_if { |i| i =~ /sqlite/ }
12
+ require 'sqlite'
13
+ end
14
+ end
15
+ x.report('sqlite3') do
16
+ N.times do
17
+ $".delete_if { |i| i =~ /sqlite3/ }
18
+ require 'sqlite3'
19
+ end
20
+ end
21
+ end
22
+
23
+ puts
24
+ puts "database creation..."
25
+ Benchmark.bm( 7 ) do |x|
26
+ x.report('sqlite') do
27
+ N.times do
28
+ File.delete "test.db" rescue nil
29
+ SQLite::Database.open( "test.db" ).close
30
+ end
31
+ end
32
+ x.report('sqlite3') do
33
+ N.times do
34
+ File.delete "test.db" rescue nil
35
+ SQLite3::Database.open( "test.db" ).close
36
+ end
37
+ end
38
+ end
39
+ File.delete "test.db" rescue nil
40
+
41
+ SQLite::Database.open( "test.db" ).close
42
+ SQLite3::Database.open( "test3.db" ).close
43
+
44
+ puts
45
+ puts "database open..."
46
+ Benchmark.bm( 7 ) do |x|
47
+ x.report('sqlite') do
48
+ N.times do
49
+ SQLite::Database.open( "test.db" ).close
50
+ end
51
+ end
52
+ x.report('sqlite3') do
53
+ N.times do
54
+ SQLite3::Database.open( "test3.db" ).close
55
+ end
56
+ end
57
+ end
58
+ File.delete "test.db" rescue nil
59
+ File.delete "test3.db" rescue nil
60
+
61
+ db = SQLite::Database.open( "test.db" )
62
+ db3 = SQLite3::Database.open( "test3.db" )
63
+
64
+ db.execute "create table foo (a,b)"
65
+ db3.execute "create table foo (a,b)"
66
+
67
+ puts
68
+ puts "insertions"
69
+ Benchmark.bm( 7 ) do |x|
70
+ x.report('sqlite') do
71
+ db.transaction do
72
+ N.times do |i|
73
+ db.execute "insert into foo values (#{i}, #{i+1})"
74
+ end
75
+ end
76
+ end
77
+ x.report('sqlite3') do
78
+ db3.transaction do
79
+ N.times do |i|
80
+ db3.execute "insert into foo values (#{i}, #{i+1})"
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ puts
87
+ puts "insertions using prepared statement"
88
+ Benchmark.bm( 7 ) do |x|
89
+ x.report('sqlite') do
90
+ db.transaction do
91
+ stmt = db.prepare "insert into foo values (?,?)"
92
+ N.times { |i| stmt.execute i, i+1 }
93
+ end
94
+ end
95
+ x.report('sqlite3') do
96
+ db3.transaction do
97
+ db3.prepare( "insert into foo values (?,?)" ) do |stmt|
98
+ N.times { |i| stmt.execute i, i+1 }
99
+ end
100
+ end
101
+ end
102
+ end
103
+
104
+ db.close
105
+ db3.close
106
+ File.delete "test.db" rescue nil
107
+ File.delete "test3.db" rescue nil
108
+
109
+ db = SQLite::Database.open( "test.db" )
110
+ db3 = SQLite3::Database.open( "test3.db" )
111
+
112
+ db.execute "create table foo (a,b)"
113
+ db.execute "insert into foo values (1,2)"
114
+ db.execute "insert into foo values (3,4)"
115
+ db.execute "insert into foo values (5,6)"
116
+
117
+ db3.execute "create table foo (a,b)"
118
+ db3.execute "insert into foo values (1,2)"
119
+ db3.execute "insert into foo values (3,4)"
120
+ db3.execute "insert into foo values (5,6)"
121
+
122
+ puts
123
+ puts "queries"
124
+ Benchmark.bm( 7 ) do |x|
125
+ x.report('sqlite') do
126
+ N.times do
127
+ db.execute "select * from foo"
128
+ end
129
+ end
130
+ x.report('sqlite3') do
131
+ N.times do
132
+ db3.execute "select * from foo"
133
+ end
134
+ end
135
+ end
136
+
137
+ db.close
138
+ db3.close
139
+ File.delete "test.db" rescue nil
140
+ File.delete "test3.db" rescue nil
@@ -0,0 +1,292 @@
1
+ if (ENV["SQLITE3_DRIVERS"] || "Native").split(/,/).include?("DL")
2
+ $:.unshift "../../../lib"
3
+
4
+ require 'sqlite3/constants'
5
+ require 'sqlite3/driver/dl/driver'
6
+ require 'test/unit'
7
+
8
+ class TC_DL_Driver < Test::Unit::TestCase
9
+
10
+ def utf16ify( str )
11
+ chars = str.split(//)
12
+ chars.zip(["\0"] * chars.length).flatten.join
13
+ end
14
+
15
+ def setup
16
+ @driver = SQLite3::Driver::DL::Driver.new
17
+ @dbname = "test.db"
18
+ @db = nil
19
+ end
20
+
21
+ def teardown
22
+ @driver.close( @db ) rescue nil
23
+ File.delete @dbname rescue nil
24
+ end
25
+
26
+ def test_open
27
+ result, @db = @driver.open( @dbname )
28
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
29
+ assert File.exist?( @dbname )
30
+ end
31
+
32
+ def test_open_utf16
33
+ name = utf16ify( @dbname )
34
+ result, @db = @driver.open( name, true )
35
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
36
+ assert File.exist?( @dbname )
37
+ end
38
+
39
+ def test_errmsg
40
+ result, @db = @driver.open( @dbname )
41
+ msg = @driver.errmsg( @db )
42
+ assert_equal msg, "not an error"
43
+ end
44
+
45
+ def test_errmsg16
46
+ result, @db = @driver.open( @dbname )
47
+ msg = @driver.errmsg( @db, true )
48
+ assert_equal msg, utf16ify( "not an error" )
49
+ end
50
+
51
+ def test_prepare
52
+ result, @db = @driver.open( @dbname )
53
+ sql = "create table foo ( a, b )"
54
+ result, handle, remainder = @driver.prepare( @db, sql )
55
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
56
+ assert_equal "", remainder
57
+ @driver.finalize( handle )
58
+ end
59
+
60
+ def test_prepare_error
61
+ result, @db = @driver.open( @dbname )
62
+ sql = "create tble foo ( a, b )"
63
+ result, handle, remainder = @driver.prepare( @db, sql )
64
+ assert_equal SQLite3::Constants::ErrorCode::ERROR, result
65
+ end
66
+
67
+ def test_prepare_remainder
68
+ result, @db = @driver.open( @dbname )
69
+ sql = "create table foo ( a, b ); select * from foo"
70
+ result, handle, remainder = @driver.prepare( @db, sql )
71
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
72
+ assert_equal " select * from foo", remainder
73
+ @driver.finalize( handle )
74
+ end
75
+
76
+ def test_prepare16
77
+ result, @db = @driver.open( @dbname )
78
+ sql = utf16ify( "create table foo ( a, b )" )
79
+ result, handle, remainder = @driver.prepare( @db, sql, true )
80
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
81
+ assert_equal "", remainder
82
+ @driver.finalize( handle )
83
+ end
84
+
85
+ def test_prepare16_remainder
86
+ result, @db = @driver.open( @dbname )
87
+ sql = utf16ify( "create table foo ( a, b ); select * from foo" )
88
+ result, handle, remainder = @driver.prepare( @db, sql, true )
89
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
90
+ assert_equal utf16ify( " select * from foo" ), remainder
91
+ @driver.finalize( handle )
92
+ end
93
+
94
+ def test_complete
95
+ assert @driver.complete?( "select * from foo;" )
96
+ end
97
+
98
+ def test_complete_fail
99
+ assert !@driver.complete?( "select * from foo" )
100
+ end
101
+
102
+ def test_complete16
103
+ assert @driver.complete?( utf16ify("select * from foo;"), true )
104
+ end
105
+
106
+ def create_foo
107
+ result, @db = @driver.open( @dbname )
108
+ sql = "create table foo ( a, b )"
109
+ result, handle, = @driver.prepare( @db, sql )
110
+ @driver.step( handle )
111
+ @driver.finalize( handle )
112
+ end
113
+
114
+ def populate_foo
115
+ create_foo
116
+ sql = "insert into foo values ( 100, 200 )"
117
+ result, handle, = @driver.prepare( @db, sql )
118
+ @driver.step( handle )
119
+ @driver.finalize( handle )
120
+ end
121
+
122
+ def test_step
123
+ populate_foo
124
+ sql = "select * from foo"
125
+ result, handle, = @driver.prepare( @db, sql )
126
+ result = @driver.step( handle )
127
+ assert_equal SQLite3::Constants::ErrorCode::ROW, result
128
+ result = @driver.step( handle )
129
+ assert_equal SQLite3::Constants::ErrorCode::DONE, result
130
+ @driver.finalize( handle )
131
+ end
132
+
133
+ def test_step_fail
134
+ populate_foo
135
+ sql = "select * from"
136
+ result, handle, = @driver.prepare( @db, sql )
137
+ result = @driver.step( handle )
138
+ assert_equal SQLite3::Constants::ErrorCode::MISUSE, result
139
+ @driver.finalize( handle )
140
+ end
141
+
142
+ def test_bind_blob
143
+ create_foo
144
+ sql = "insert into foo (b) values (?)"
145
+ result, handle, = @driver.prepare( @db, sql )
146
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
147
+ result = @driver.bind_blob( handle, 1, "a\0b\1c\2d\0e" )
148
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
149
+ result = @driver.step( handle )
150
+ assert_equal SQLite3::Constants::ErrorCode::DONE, result
151
+ result = @driver.finalize( handle )
152
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
153
+ sql = "select b from foo"
154
+ result, handle, = @driver.prepare( @db, sql )
155
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
156
+ result = @driver.step( handle )
157
+ assert_equal SQLite3::Constants::ErrorCode::ROW, result
158
+ assert_equal "a\0b\1c\2d\0e", @driver.column_blob( handle, 0 )
159
+ result = @driver.finalize( handle )
160
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
161
+ end
162
+
163
+ def test_bind_double
164
+ create_foo
165
+ sql = "insert into foo (b) values (?)"
166
+ result, handle, = @driver.prepare( @db, sql )
167
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
168
+ result = @driver.bind_double( handle, 1, 3.14 )
169
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
170
+ result = @driver.step( handle )
171
+ assert_equal SQLite3::Constants::ErrorCode::DONE, result
172
+ result = @driver.finalize( handle )
173
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
174
+ sql = "select b from foo"
175
+ result, handle, = @driver.prepare( @db, sql )
176
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
177
+ result = @driver.step( handle )
178
+ assert_equal SQLite3::Constants::ErrorCode::ROW, result
179
+ assert_equal 3.14, @driver.column_double( handle, 0 )
180
+ result = @driver.finalize( handle )
181
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
182
+ end
183
+
184
+ def test_bind_int
185
+ create_foo
186
+ sql = "insert into foo (b) values (?)"
187
+ result, handle, = @driver.prepare( @db, sql )
188
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
189
+ result = @driver.bind_int( handle, 1, 14 )
190
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
191
+ result = @driver.step( handle )
192
+ assert_equal SQLite3::Constants::ErrorCode::DONE, result
193
+ result = @driver.finalize( handle )
194
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
195
+ sql = "select b from foo"
196
+ result, handle, = @driver.prepare( @db, sql )
197
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
198
+ result = @driver.step( handle )
199
+ assert_equal SQLite3::Constants::ErrorCode::ROW, result
200
+ assert_equal 14, @driver.column_int( handle, 0 )
201
+ result = @driver.finalize( handle )
202
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
203
+ end
204
+
205
+ def test_bind_null
206
+ create_foo
207
+ sql = "insert into foo (b) values (?)"
208
+ result, handle, = @driver.prepare( @db, sql )
209
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
210
+ result = @driver.bind_null( handle, 1 )
211
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
212
+ result = @driver.step( handle )
213
+ assert_equal SQLite3::Constants::ErrorCode::DONE, result
214
+ result = @driver.finalize( handle )
215
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
216
+ sql = "select b from foo"
217
+ result, handle, = @driver.prepare( @db, sql )
218
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
219
+ result = @driver.step( handle )
220
+ assert_equal SQLite3::Constants::ErrorCode::ROW, result
221
+ assert_equal SQLite3::Constants::ColumnType::NULL,
222
+ @driver.column_type( handle, 0 )
223
+ result = @driver.finalize( handle )
224
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
225
+ end
226
+
227
+ def test_bind_text
228
+ create_foo
229
+ sql = "insert into foo (b) values (?)"
230
+ result, handle, = @driver.prepare( @db, sql )
231
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
232
+ result = @driver.bind_text( handle, 1, "hello, world" )
233
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
234
+ result = @driver.step( handle )
235
+ assert_equal SQLite3::Constants::ErrorCode::DONE, result
236
+ result = @driver.finalize( handle )
237
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
238
+ sql = "select b from foo"
239
+ result, handle, = @driver.prepare( @db, sql )
240
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
241
+ result = @driver.step( handle )
242
+ assert_equal SQLite3::Constants::ErrorCode::ROW, result
243
+ assert_equal "hello, world", @driver.column_text( handle, 0 )
244
+ result = @driver.finalize( handle )
245
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
246
+ end
247
+
248
+ def test_bind_text16
249
+ create_foo
250
+ sql = "insert into foo (b) values (?)"
251
+ result, handle, = @driver.prepare( @db, sql )
252
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
253
+ result = @driver.bind_text( handle, 1, utf16ify("hello, world"), true )
254
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
255
+ result = @driver.step( handle )
256
+ assert_equal SQLite3::Constants::ErrorCode::DONE, result
257
+ result = @driver.finalize( handle )
258
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
259
+ sql = "select b from foo"
260
+ result, handle, = @driver.prepare( @db, sql )
261
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
262
+ result = @driver.step( handle )
263
+ assert_equal SQLite3::Constants::ErrorCode::ROW, result
264
+ assert_equal "hello, world", @driver.column_text( handle, 0 )
265
+ result = @driver.finalize( handle )
266
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
267
+ end
268
+
269
+ def test_bind_parameter_index
270
+ create_foo
271
+ sql = "insert into foo (b) values (:hello)"
272
+ result, handle, = @driver.prepare( @db, sql )
273
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
274
+ result = @driver.bind_parameter_index( handle, ":hello" )
275
+ assert_equal 1, result
276
+ result = @driver.bind_parameter_index( handle, ":foo" )
277
+ assert_equal 0, result
278
+ @driver.finalize( handle )
279
+ end
280
+
281
+ def test_bind_parameter_name
282
+ create_foo
283
+ sql = "insert into foo (a,b) values (?,:foo)"
284
+ result, handle, = @driver.prepare( @db, sql )
285
+ assert_equal SQLite3::Constants::ErrorCode::OK, result
286
+ assert_nil nil, @driver.bind_parameter_name(handle,1)
287
+ assert_equal ":foo", @driver.bind_parameter_name(handle,2)
288
+ @driver.finalize( handle )
289
+ end
290
+
291
+ end
292
+ end