sqlite3-ruby 1.2.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

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