sqlite3 1.3.11-x64-mingw32 → 1.5.0.rc1-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +5 -5
  2. data/.gemtest +0 -0
  3. data/{API_CHANGES.rdoc → API_CHANGES.md} +3 -4
  4. data/CHANGELOG.md +419 -0
  5. data/CONTRIBUTING.md +24 -0
  6. data/Gemfile +2 -15
  7. data/LICENSE-DEPENDENCIES +20 -0
  8. data/README.md +233 -0
  9. data/ext/sqlite3/aggregator.c +273 -0
  10. data/ext/sqlite3/aggregator.h +12 -0
  11. data/ext/sqlite3/database.c +210 -182
  12. data/ext/sqlite3/database.h +2 -0
  13. data/ext/sqlite3/exception.c +6 -2
  14. data/ext/sqlite3/extconf.rb +148 -39
  15. data/ext/sqlite3/sqlite3.c +67 -1
  16. data/ext/sqlite3/sqlite3_ruby.h +0 -7
  17. data/ext/sqlite3/statement.c +15 -20
  18. data/faq/faq.md +431 -0
  19. data/faq/faq.yml +1 -1
  20. data/lib/sqlite3/2.6/sqlite3_native.so +0 -0
  21. data/lib/sqlite3/2.7/sqlite3_native.so +0 -0
  22. data/lib/sqlite3/3.0/sqlite3_native.so +0 -0
  23. data/lib/sqlite3/constants.rb +2 -1
  24. data/lib/sqlite3/database.rb +209 -58
  25. data/lib/sqlite3/errors.rb +1 -10
  26. data/lib/sqlite3/pragmas.rb +372 -57
  27. data/lib/sqlite3/resultset.rb +2 -10
  28. data/lib/sqlite3/statement.rb +2 -1
  29. data/lib/sqlite3/translator.rb +1 -1
  30. data/lib/sqlite3/version.rb +4 -4
  31. data/lib/sqlite3.rb +5 -0
  32. data/test/helper.rb +9 -0
  33. data/test/test_database.rb +180 -9
  34. data/test/test_database_flags.rb +95 -0
  35. data/test/test_database_readonly.rb +9 -2
  36. data/test/test_database_readwrite.rb +41 -0
  37. data/test/test_integration.rb +12 -77
  38. data/test/test_integration_aggregate.rb +336 -0
  39. data/test/test_integration_resultset.rb +0 -17
  40. data/test/test_sqlite3.rb +16 -0
  41. data/test/test_statement.rb +12 -9
  42. metadata +55 -84
  43. data/CHANGELOG.rdoc +0 -287
  44. data/Manifest.txt +0 -52
  45. data/README.rdoc +0 -101
  46. data/Rakefile +0 -10
  47. data/lib/sqlite3/2.0/sqlite3_native.so +0 -0
  48. data/lib/sqlite3/2.1/sqlite3_native.so +0 -0
  49. data/lib/sqlite3/2.2/sqlite3_native.so +0 -0
  50. data/setup.rb +0 -1333
  51. data/tasks/faq.rake +0 -9
  52. data/tasks/gem.rake +0 -38
  53. data/tasks/native.rake +0 -52
  54. data/tasks/vendor_sqlite3.rake +0 -97
@@ -13,52 +13,48 @@ module SQLite3
13
13
  def get_boolean_pragma( name )
14
14
  get_first_value( "PRAGMA #{name}" ) != "0"
15
15
  end
16
- private :get_boolean_pragma
17
16
 
18
17
  # Sets the given pragma to the given boolean value. The value itself
19
18
  # may be +true+ or +false+, or any other commonly used string or
20
19
  # integer that represents truth.
21
20
  def set_boolean_pragma( name, mode )
22
21
  case mode
23
- when String
22
+ when String
24
23
  case mode.downcase
25
- when "on", "yes", "true", "y", "t"; mode = "'ON'"
26
- when "off", "no", "false", "n", "f"; mode = "'OFF'"
27
- else
24
+ when "on", "yes", "true", "y", "t"; mode = "'ON'"
25
+ when "off", "no", "false", "n", "f"; mode = "'OFF'"
26
+ else
28
27
  raise Exception,
29
28
  "unrecognized pragma parameter #{mode.inspect}"
30
29
  end
31
- when true, 1
30
+ when true, 1
32
31
  mode = "ON"
33
- when false, 0, nil
32
+ when false, 0, nil
34
33
  mode = "OFF"
35
- else
34
+ else
36
35
  raise Exception,
37
36
  "unrecognized pragma parameter #{mode.inspect}"
38
37
  end
39
38
 
40
39
  execute( "PRAGMA #{name}=#{mode}" )
41
40
  end
42
- private :set_boolean_pragma
43
41
 
44
42
  # Requests the given pragma (and parameters), and if the block is given,
45
43
  # each row of the result set will be yielded to it. Otherwise, the results
46
44
  # are returned as an array.
47
- def get_query_pragma( name, *parms, &block ) # :yields: row
48
- if parms.empty?
45
+ def get_query_pragma( name, *params, &block ) # :yields: row
46
+ if params.empty?
49
47
  execute( "PRAGMA #{name}", &block )
50
48
  else
51
- args = "'" + parms.join("','") + "'"
49
+ args = "'" + params.join("','") + "'"
52
50
  execute( "PRAGMA #{name}( #{args} )", &block )
53
51
  end
54
52
  end
55
- private :get_query_pragma
56
53
 
57
54
  # Return the value of the given pragma.
58
55
  def get_enum_pragma( name )
59
56
  get_first_value( "PRAGMA #{name}" )
60
57
  end
61
- private :get_enum_pragma
62
58
 
63
59
  # Set the value of the given pragma to +mode+. The +mode+ parameter must
64
60
  # conform to one of the values in the given +enum+ array. Each entry in
@@ -71,20 +67,17 @@ module SQLite3
71
67
  "unrecognized #{name} #{mode.inspect}" unless match
72
68
  execute( "PRAGMA #{name}='#{match.first.upcase}'" )
73
69
  end
74
- private :set_enum_pragma
75
70
 
76
71
  # Returns the value of the given pragma as an integer.
77
72
  def get_int_pragma( name )
78
73
  get_first_value( "PRAGMA #{name}" ).to_i
79
74
  end
80
- private :get_int_pragma
81
75
 
82
76
  # Set the value of the given pragma to the integer value of the +value+
83
77
  # parameter.
84
78
  def set_int_pragma( name, value )
85
79
  execute( "PRAGMA #{name}=#{value.to_i}" )
86
80
  end
87
- private :set_int_pragma
88
81
 
89
82
  # The enumeration of valid synchronous modes.
90
83
  SYNCHRONOUS_MODES = [ [ 'full', 2 ], [ 'normal', 1 ], [ 'off', 0 ] ]
@@ -92,37 +85,52 @@ module SQLite3
92
85
  # The enumeration of valid temp store modes.
93
86
  TEMP_STORE_MODES = [ [ 'default', 0 ], [ 'file', 1 ], [ 'memory', 2 ] ]
94
87
 
95
- # Does an integrity check on the database. If the check fails, a
96
- # SQLite3::Exception will be raised. Otherwise it
97
- # returns silently.
98
- def integrity_check
99
- execute( "PRAGMA integrity_check" ) do |row|
100
- raise Exception, row[0] if row[0] != "ok"
101
- end
88
+ # The enumeration of valid auto vacuum modes.
89
+ AUTO_VACUUM_MODES = [ [ 'none', 0 ], [ 'full', 1 ], [ 'incremental', 2 ] ]
90
+
91
+ # The list of valid journaling modes.
92
+ JOURNAL_MODES = [ [ 'delete' ], [ 'truncate' ], [ 'persist' ], [ 'memory' ],
93
+ [ 'wal' ], [ 'off' ] ]
94
+
95
+ # The list of valid locking modes.
96
+ LOCKING_MODES = [ [ 'normal' ], [ 'exclusive' ] ]
97
+
98
+ # The list of valid encodings.
99
+ ENCODINGS = [ [ 'utf-8' ], [ 'utf-16' ], [ 'utf-16le' ], [ 'utf-16be ' ] ]
100
+
101
+ # The list of valid WAL checkpoints.
102
+ WAL_CHECKPOINTS = [ [ 'passive' ], [ 'full' ], [ 'restart' ], [ 'truncate' ] ]
103
+
104
+ def application_id
105
+ get_int_pragma "application_id"
106
+ end
107
+
108
+ def application_id=( integer )
109
+ set_int_pragma "application_id", integer
102
110
  end
103
111
 
104
112
  def auto_vacuum
105
- get_boolean_pragma "auto_vacuum"
113
+ get_enum_pragma "auto_vacuum"
106
114
  end
107
115
 
108
116
  def auto_vacuum=( mode )
109
- set_boolean_pragma "auto_vacuum", mode
117
+ set_enum_pragma "auto_vacuum", mode, AUTO_VACUUM_MODES
110
118
  end
111
119
 
112
- def schema_cookie
113
- get_int_pragma "schema_cookie"
120
+ def automatic_index
121
+ get_boolean_pragma "automatic_index"
114
122
  end
115
123
 
116
- def schema_cookie=( cookie )
117
- set_int_pragma "schema_cookie", cookie
124
+ def automatic_index=( mode )
125
+ set_boolean_pragma "automatic_index", mode
118
126
  end
119
127
 
120
- def user_cookie
121
- get_int_pragma "user_cookie"
128
+ def busy_timeout
129
+ get_int_pragma "busy_timeout"
122
130
  end
123
131
 
124
- def user_cookie=( cookie )
125
- set_int_pragma "user_cookie", cookie
132
+ def busy_timeout=( milliseconds )
133
+ set_int_pragma "busy_timeout", milliseconds
126
134
  end
127
135
 
128
136
  def cache_size
@@ -133,6 +141,58 @@ module SQLite3
133
141
  set_int_pragma "cache_size", size
134
142
  end
135
143
 
144
+ def cache_spill
145
+ get_boolean_pragma "cache_spill"
146
+ end
147
+
148
+ def cache_spill=( mode )
149
+ set_boolean_pragma "cache_spill", mode
150
+ end
151
+
152
+ def case_sensitive_like=( mode )
153
+ set_boolean_pragma "case_sensitive_like", mode
154
+ end
155
+
156
+ def cell_size_check
157
+ get_boolean_pragma "cell_size_check"
158
+ end
159
+
160
+ def cell_size_check=( mode )
161
+ set_boolean_pragma "cell_size_check", mode
162
+ end
163
+
164
+ def checkpoint_fullfsync
165
+ get_boolean_pragma "checkpoint_fullfsync"
166
+ end
167
+
168
+ def checkpoint_fullfsync=( mode )
169
+ set_boolean_pragma "checkpoint_fullfsync", mode
170
+ end
171
+
172
+ def collation_list( &block ) # :yields: row
173
+ get_query_pragma "collation_list", &block
174
+ end
175
+
176
+ def compile_options( &block ) # :yields: row
177
+ get_query_pragma "compile_options", &block
178
+ end
179
+
180
+ def count_changes
181
+ get_boolean_pragma "count_changes"
182
+ end
183
+
184
+ def count_changes=( mode )
185
+ set_boolean_pragma "count_changes", mode
186
+ end
187
+
188
+ def data_version
189
+ get_int_pragma "data_version"
190
+ end
191
+
192
+ def database_list( &block ) # :yields: row
193
+ get_query_pragma "database_list", &block
194
+ end
195
+
136
196
  def default_cache_size
137
197
  get_int_pragma "default_cache_size"
138
198
  end
@@ -149,14 +209,6 @@ module SQLite3
149
209
  set_enum_pragma "default_synchronous", mode, SYNCHRONOUS_MODES
150
210
  end
151
211
 
152
- def synchronous
153
- get_enum_pragma "synchronous"
154
- end
155
-
156
- def synchronous=( mode )
157
- set_enum_pragma "synchronous", mode, SYNCHRONOUS_MODES
158
- end
159
-
160
212
  def default_temp_store
161
213
  get_enum_pragma "default_temp_store"
162
214
  end
@@ -164,13 +216,41 @@ module SQLite3
164
216
  def default_temp_store=( mode )
165
217
  set_enum_pragma "default_temp_store", mode, TEMP_STORE_MODES
166
218
  end
167
-
168
- def temp_store
169
- get_enum_pragma "temp_store"
219
+
220
+ def defer_foreign_keys
221
+ get_boolean_pragma "defer_foreign_keys"
170
222
  end
171
223
 
172
- def temp_store=( mode )
173
- set_enum_pragma "temp_store", mode, TEMP_STORE_MODES
224
+ def defer_foreign_keys=( mode )
225
+ set_boolean_pragma "defer_foreign_keys", mode
226
+ end
227
+
228
+ def encoding
229
+ get_enum_pragma "encoding"
230
+ end
231
+
232
+ def encoding=( mode )
233
+ set_enum_pragma "encoding", mode, ENCODINGS
234
+ end
235
+
236
+ def foreign_key_check( *table, &block ) # :yields: row
237
+ get_query_pragma "foreign_key_check", *table, &block
238
+ end
239
+
240
+ def foreign_key_list( table, &block ) # :yields: row
241
+ get_query_pragma "foreign_key_list", table, &block
242
+ end
243
+
244
+ def foreign_keys
245
+ get_boolean_pragma "foreign_keys"
246
+ end
247
+
248
+ def foreign_keys=( mode )
249
+ set_boolean_pragma "foreign_keys", mode
250
+ end
251
+
252
+ def freelist_count
253
+ get_int_pragma "freelist_count"
174
254
  end
175
255
 
176
256
  def full_column_names
@@ -181,14 +261,238 @@ module SQLite3
181
261
  set_boolean_pragma "full_column_names", mode
182
262
  end
183
263
 
184
- def parser_trace
185
- get_boolean_pragma "parser_trace"
264
+ def fullfsync
265
+ get_boolean_pragma "fullfsync"
266
+ end
267
+
268
+ def fullfsync=( mode )
269
+ set_boolean_pragma "fullfsync", mode
270
+ end
271
+
272
+ def ignore_check_constraints=( mode )
273
+ set_boolean_pragma "ignore_check_constraints", mode
274
+ end
275
+
276
+ def incremental_vacuum( pages, &block ) # :yields: row
277
+ get_query_pragma "incremental_vacuum", pages, &block
278
+ end
279
+
280
+ def index_info( index, &block ) # :yields: row
281
+ get_query_pragma "index_info", index, &block
282
+ end
283
+
284
+ def index_list( table, &block ) # :yields: row
285
+ get_query_pragma "index_list", table, &block
286
+ end
287
+
288
+ def index_xinfo( index, &block ) # :yields: row
289
+ get_query_pragma "index_xinfo", index, &block
290
+ end
291
+
292
+ def integrity_check( *num_errors, &block ) # :yields: row
293
+ get_query_pragma "integrity_check", *num_errors, &block
294
+ end
295
+
296
+ def journal_mode
297
+ get_enum_pragma "journal_mode"
298
+ end
299
+
300
+ def journal_mode=( mode )
301
+ set_enum_pragma "journal_mode", mode, JOURNAL_MODES
302
+ end
303
+
304
+ def journal_size_limit
305
+ get_int_pragma "journal_size_limit"
306
+ end
307
+
308
+ def journal_size_limit=( size )
309
+ set_int_pragma "journal_size_limit", size
310
+ end
311
+
312
+ def legacy_file_format
313
+ get_boolean_pragma "legacy_file_format"
314
+ end
315
+
316
+ def legacy_file_format=( mode )
317
+ set_boolean_pragma "legacy_file_format", mode
318
+ end
319
+
320
+ def locking_mode
321
+ get_enum_pragma "locking_mode"
322
+ end
323
+
324
+ def locking_mode=( mode )
325
+ set_enum_pragma "locking_mode", mode, LOCKING_MODES
326
+ end
327
+
328
+ def max_page_count
329
+ get_int_pragma "max_page_count"
330
+ end
331
+
332
+ def max_page_count=( size )
333
+ set_int_pragma "max_page_count", size
334
+ end
335
+
336
+ def mmap_size
337
+ get_int_pragma "mmap_size"
338
+ end
339
+
340
+ def mmap_size=( size )
341
+ set_int_pragma "mmap_size", size
342
+ end
343
+
344
+ def page_count
345
+ get_int_pragma "page_count"
346
+ end
347
+
348
+ def page_size
349
+ get_int_pragma "page_size"
350
+ end
351
+
352
+ def page_size=( size )
353
+ set_int_pragma "page_size", size
186
354
  end
187
355
 
188
356
  def parser_trace=( mode )
189
357
  set_boolean_pragma "parser_trace", mode
190
358
  end
191
359
 
360
+ def query_only
361
+ get_boolean_pragma "query_only"
362
+ end
363
+
364
+ def query_only=( mode )
365
+ set_boolean_pragma "query_only", mode
366
+ end
367
+
368
+ def quick_check( *num_errors, &block ) # :yields: row
369
+ get_query_pragma "quick_check", *num_errors, &block
370
+ end
371
+
372
+ def read_uncommitted
373
+ get_boolean_pragma "read_uncommitted"
374
+ end
375
+
376
+ def read_uncommitted=( mode )
377
+ set_boolean_pragma "read_uncommitted", mode
378
+ end
379
+
380
+ def recursive_triggers
381
+ get_boolean_pragma "recursive_triggers"
382
+ end
383
+
384
+ def recursive_triggers=( mode )
385
+ set_boolean_pragma "recursive_triggers", mode
386
+ end
387
+
388
+ def reverse_unordered_selects
389
+ get_boolean_pragma "reverse_unordered_selects"
390
+ end
391
+
392
+ def reverse_unordered_selects=( mode )
393
+ set_boolean_pragma "reverse_unordered_selects", mode
394
+ end
395
+
396
+ def schema_cookie
397
+ get_int_pragma "schema_cookie"
398
+ end
399
+
400
+ def schema_cookie=( cookie )
401
+ set_int_pragma "schema_cookie", cookie
402
+ end
403
+
404
+ def schema_version
405
+ get_int_pragma "schema_version"
406
+ end
407
+
408
+ def schema_version=( version )
409
+ set_int_pragma "schema_version", version
410
+ end
411
+
412
+ def secure_delete
413
+ get_boolean_pragma "secure_delete"
414
+ end
415
+
416
+ def secure_delete=( mode )
417
+ set_boolean_pragma "secure_delete", mode
418
+ end
419
+
420
+ def short_column_names
421
+ get_boolean_pragma "short_column_names"
422
+ end
423
+
424
+ def short_column_names=( mode )
425
+ set_boolean_pragma "short_column_names", mode
426
+ end
427
+
428
+ def shrink_memory
429
+ execute( "PRAGMA shrink_memory" )
430
+ end
431
+
432
+ def soft_heap_limit
433
+ get_int_pragma "soft_heap_limit"
434
+ end
435
+
436
+ def soft_heap_limit=( mode )
437
+ set_int_pragma "soft_heap_limit", mode
438
+ end
439
+
440
+ def stats( &block ) # :yields: row
441
+ get_query_pragma "stats", &block
442
+ end
443
+
444
+ def synchronous
445
+ get_enum_pragma "synchronous"
446
+ end
447
+
448
+ def synchronous=( mode )
449
+ set_enum_pragma "synchronous", mode, SYNCHRONOUS_MODES
450
+ end
451
+
452
+ def temp_store
453
+ get_enum_pragma "temp_store"
454
+ end
455
+
456
+ def temp_store=( mode )
457
+ set_enum_pragma "temp_store", mode, TEMP_STORE_MODES
458
+ end
459
+
460
+ def threads
461
+ get_int_pragma "threads"
462
+ end
463
+
464
+ def threads=( count )
465
+ set_int_pragma "threads", count
466
+ end
467
+
468
+ def user_cookie
469
+ get_int_pragma "user_cookie"
470
+ end
471
+
472
+ def user_cookie=( cookie )
473
+ set_int_pragma "user_cookie", cookie
474
+ end
475
+
476
+ def user_version
477
+ get_int_pragma "user_version"
478
+ end
479
+
480
+ def user_version=( version )
481
+ set_int_pragma "user_version", version
482
+ end
483
+
484
+ def vdbe_addoptrace=( mode )
485
+ set_boolean_pragma "vdbe_addoptrace", mode
486
+ end
487
+
488
+ def vdbe_debug=( mode )
489
+ set_boolean_pragma "vdbe_debug", mode
490
+ end
491
+
492
+ def vdbe_listing=( mode )
493
+ set_boolean_pragma "vdbe_listing", mode
494
+ end
495
+
192
496
  def vdbe_trace
193
497
  get_boolean_pragma "vdbe_trace"
194
498
  end
@@ -197,20 +501,24 @@ module SQLite3
197
501
  set_boolean_pragma "vdbe_trace", mode
198
502
  end
199
503
 
200
- def database_list( &block ) # :yields: row
201
- get_query_pragma "database_list", &block
504
+ def wal_autocheckpoint
505
+ get_int_pragma "wal_autocheckpoint"
202
506
  end
203
507
 
204
- def foreign_key_list( table, &block ) # :yields: row
205
- get_query_pragma "foreign_key_list", table, &block
508
+ def wal_autocheckpoint=( mode )
509
+ set_int_pragma "wal_autocheckpoint", mode
206
510
  end
207
511
 
208
- def index_info( index, &block ) # :yields: row
209
- get_query_pragma "index_info", index, &block
512
+ def wal_checkpoint
513
+ get_enum_pragma "wal_checkpoint"
210
514
  end
211
515
 
212
- def index_list( table, &block ) # :yields: row
213
- get_query_pragma "index_list", table, &block
516
+ def wal_checkpoint=( mode )
517
+ set_enum_pragma "wal_checkpoint", mode, WAL_CHECKPOINTS
518
+ end
519
+
520
+ def writable_schema=( mode )
521
+ set_boolean_pragma "writable_schema", mode
214
522
  end
215
523
 
216
524
  ###
@@ -235,6 +543,13 @@ module SQLite3
235
543
 
236
544
  tweak_default(new_row) if needs_tweak_default
237
545
 
546
+ # Ensure the type value is downcased. On Mac and Windows
547
+ # platforms this value is now being returned as all upper
548
+ # case.
549
+ if new_row['type']
550
+ new_row['type'] = new_row['type'].downcase
551
+ end
552
+
238
553
  if block_given?
239
554
  yield new_row
240
555
  else
@@ -108,11 +108,7 @@ object that created this object
108
108
  row = @stmt.step
109
109
  return nil if @stmt.done?
110
110
 
111
- if @db.type_translation
112
- row = @stmt.types.zip(row).map do |type, value|
113
- @db.translator.translate( type, value )
114
- end
115
- end
111
+ row = @db.translate_from_db @stmt.types, row
116
112
 
117
113
  if row.respond_to?(:fields)
118
114
  # FIXME: this can only happen if the translator returns something
@@ -176,11 +172,7 @@ object that created this object
176
172
 
177
173
  # FIXME: type translation is deprecated, so this can be removed
178
174
  # in 2.0
179
- if @db.type_translation
180
- row = @stmt.types.zip(row).map do |type, value|
181
- @db.translator.translate( type, value )
182
- end
183
- end
175
+ row = @db.translate_from_db @stmt.types, row
184
176
 
185
177
  # FIXME: this can be switched to a regular hash in 2.0
186
178
  row = HashWithTypesAndFields[*@stmt.columns.zip(row).flatten]
@@ -137,7 +137,8 @@ module SQLite3
137
137
  column_name column
138
138
  end
139
139
  @types = Array.new(column_count) do |column|
140
- column_decltype column
140
+ val = column_decltype(column)
141
+ val.nil? ? nil : val.downcase
141
142
  end
142
143
  end
143
144
  end
@@ -43,7 +43,7 @@ Built in translators are deprecated and will be removed in version 2.0.0
43
43
  end
44
44
 
45
45
  # Translate the given string value to a value of the given type. In the
46
- # absense of an installed translator block for the given type, the value
46
+ # absence of an installed translator block for the given type, the value
47
47
  # itself is always returned. Further, +nil+ values are never translated,
48
48
  # and are always passed straight through regardless of the type parameter.
49
49
  def translate( type, value )
@@ -1,13 +1,13 @@
1
1
  module SQLite3
2
2
 
3
- VERSION = '1.3.11'
3
+ VERSION = "1.5.0.rc1"
4
4
 
5
5
  module VersionProxy
6
6
 
7
7
  MAJOR = 1
8
- MINOR = 3
9
- TINY = 11
10
- BUILD = nil
8
+ MINOR = 5
9
+ TINY = 0
10
+ BUILD = "rc1"
11
11
 
12
12
  STRING = [ MAJOR, MINOR, TINY, BUILD ].compact.join( "." )
13
13
  #:beta-tag:
data/lib/sqlite3.rb CHANGED
@@ -8,3 +8,8 @@ end
8
8
 
9
9
  require 'sqlite3/database'
10
10
  require 'sqlite3/version'
11
+
12
+ module SQLite3
13
+ # Was sqlite3 compiled with thread safety on?
14
+ def self.threadsafe?; threadsafe > 0; end
15
+ end
data/test/helper.rb CHANGED
@@ -1,6 +1,15 @@
1
1
  require 'sqlite3'
2
2
  require 'minitest/autorun'
3
3
 
4
+ if ENV['GITHUB_ACTIONS'] == 'true' || ENV['CI']
5
+ $VERBOSE = nil
6
+ end
7
+
8
+ puts "info: sqlite3-ruby version: #{SQLite3::VERSION}/#{SQLite3::VersionProxy::STRING}"
9
+ puts "info: sqlite3 version: #{SQLite3::SQLITE_VERSION}/#{SQLite3::SQLITE_LOADED_VERSION}"
10
+ puts "info: sqlcipher?: #{SQLite3.sqlcipher?}"
11
+ puts "info: threadsafe?: #{SQLite3.threadsafe?}"
12
+
4
13
  unless RUBY_VERSION >= "1.9"
5
14
  require 'iconv'
6
15
  end