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.
- data/README.rdoc +51 -0
- data/doc/faq/faq.html +408 -0
- data/doc/faq/faq.rb +145 -0
- data/doc/faq/faq.yml +426 -0
- data/ext/sqlite3_api/MANIFEST +4 -0
- data/ext/sqlite3_api/Makefile +142 -0
- data/ext/sqlite3_api/extconf.rb +16 -0
- data/ext/sqlite3_api/mkmf.log +66 -0
- data/ext/sqlite3_api/sqlite3_api.i +358 -0
- data/ext/sqlite3_api/sqlite3_api.so +0 -0
- data/ext/sqlite3_api/sqlite3_api_wrap.c +3094 -0
- data/ext/sqlite3_api/sqlite3_api_wrap.o +0 -0
- data/ext/sqlite3_api/win32/build.bat +7 -0
- data/lib/sqlite3.rb +1 -0
- data/lib/sqlite3/constants.rb +49 -0
- data/lib/sqlite3/database.rb +715 -0
- data/lib/sqlite3/driver/dl/api.rb +152 -0
- data/lib/sqlite3/driver/dl/driver.rb +307 -0
- data/lib/sqlite3/driver/native/driver.rb +211 -0
- data/lib/sqlite3/errors.rb +68 -0
- data/lib/sqlite3/pragmas.rb +271 -0
- data/lib/sqlite3/resultset.rb +176 -0
- data/lib/sqlite3/statement.rb +230 -0
- data/lib/sqlite3/translator.rb +109 -0
- data/lib/sqlite3/value.rb +57 -0
- data/lib/sqlite3/version.rb +14 -0
- data/test/bm.rb +140 -0
- data/test/driver/dl/tc_driver.rb +292 -0
- data/test/mocks.rb +45 -0
- data/test/native-vs-dl.rb +126 -0
- data/test/tc_database.rb +198 -0
- data/test/tc_errors.rb +21 -0
- data/test/tc_integration.rb +1044 -0
- data/test/tests.rb +6 -0
- metadata +96 -0
@@ -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
|
data/test/bm.rb
ADDED
@@ -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
|