sqlite3 1.7.3 → 2.5.0

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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +292 -0
  3. data/CONTRIBUTING.md +33 -7
  4. data/FAQ.md +43 -77
  5. data/INSTALLATION.md +14 -6
  6. data/LICENSE +18 -22
  7. data/README.md +97 -9
  8. data/dependencies.yml +10 -11
  9. data/ext/sqlite3/aggregator.c +142 -145
  10. data/ext/sqlite3/aggregator.h +2 -4
  11. data/ext/sqlite3/backup.c +74 -65
  12. data/ext/sqlite3/backup.h +2 -2
  13. data/ext/sqlite3/database.c +621 -493
  14. data/ext/sqlite3/database.h +13 -4
  15. data/ext/sqlite3/exception.c +116 -92
  16. data/ext/sqlite3/exception.h +5 -1
  17. data/ext/sqlite3/extconf.rb +33 -24
  18. data/ext/sqlite3/sqlite3.c +176 -115
  19. data/ext/sqlite3/sqlite3_ruby.h +2 -2
  20. data/ext/sqlite3/statement.c +553 -300
  21. data/ext/sqlite3/statement.h +4 -3
  22. data/ext/sqlite3/timespec.h +20 -0
  23. data/lib/sqlite3/constants.rb +195 -47
  24. data/lib/sqlite3/database.rb +223 -187
  25. data/lib/sqlite3/errors.rb +54 -1
  26. data/lib/sqlite3/fork_safety.rb +66 -0
  27. data/lib/sqlite3/pragmas.rb +140 -136
  28. data/lib/sqlite3/resultset.rb +14 -97
  29. data/lib/sqlite3/statement.rb +58 -13
  30. data/lib/sqlite3/value.rb +17 -20
  31. data/lib/sqlite3/version.rb +2 -21
  32. data/lib/sqlite3/version_info.rb +17 -0
  33. data/lib/sqlite3.rb +8 -4
  34. data/ports/archives/sqlite-autoconf-3470200.tar.gz +0 -0
  35. metadata +9 -37
  36. data/API_CHANGES.md +0 -49
  37. data/ChangeLog.cvs +0 -88
  38. data/Gemfile +0 -10
  39. data/LICENSE-DEPENDENCIES +0 -20
  40. data/lib/sqlite3/translator.rb +0 -117
  41. data/ports/archives/sqlite-autoconf-3450200.tar.gz +0 -0
  42. data/test/helper.rb +0 -27
  43. data/test/test_backup.rb +0 -33
  44. data/test/test_collation.rb +0 -82
  45. data/test/test_database.rb +0 -668
  46. data/test/test_database_flags.rb +0 -95
  47. data/test/test_database_readonly.rb +0 -36
  48. data/test/test_database_readwrite.rb +0 -41
  49. data/test/test_deprecated.rb +0 -49
  50. data/test/test_encoding.rb +0 -165
  51. data/test/test_integration.rb +0 -507
  52. data/test/test_integration_aggregate.rb +0 -336
  53. data/test/test_integration_open_close.rb +0 -30
  54. data/test/test_integration_pending.rb +0 -115
  55. data/test/test_integration_resultset.rb +0 -142
  56. data/test/test_integration_statement.rb +0 -194
  57. data/test/test_pragmas.rb +0 -22
  58. data/test/test_result_set.rb +0 -47
  59. data/test/test_sqlite3.rb +0 -30
  60. data/test/test_statement.rb +0 -290
  61. data/test/test_statement_execute.rb +0 -39
@@ -1,59 +1,55 @@
1
- require 'sqlite3/errors'
1
+ require "sqlite3/errors"
2
2
 
3
3
  module SQLite3
4
-
5
4
  # This module is intended for inclusion solely by the Database class. It
6
5
  # defines convenience methods for the various pragmas supported by SQLite3.
7
6
  #
8
7
  # For a detailed description of these pragmas, see the SQLite3 documentation
9
8
  # at http://sqlite.org/pragma.html.
10
9
  module Pragmas
11
-
12
10
  # Returns +true+ or +false+ depending on the value of the named pragma.
13
- def get_boolean_pragma( name )
14
- get_first_value( "PRAGMA #{name}" ) != 0
11
+ def get_boolean_pragma(name)
12
+ get_first_value("PRAGMA #{name}") != 0
15
13
  end
16
14
 
17
15
  # Sets the given pragma to the given boolean value. The value itself
18
16
  # may be +true+ or +false+, or any other commonly used string or
19
17
  # integer that represents truth.
20
- def set_boolean_pragma( name, mode )
18
+ def set_boolean_pragma(name, mode)
21
19
  case mode
22
20
  when String
23
- case mode.downcase
24
- when "on", "yes", "true", "y", "t"; mode = "'ON'"
25
- when "off", "no", "false", "n", "f"; mode = "'OFF'"
26
- else
27
- raise Exception,
28
- "unrecognized pragma parameter #{mode.inspect}"
29
- end
21
+ case mode.downcase
22
+ when "on", "yes", "true", "y", "t" then mode = "'ON'"
23
+ when "off", "no", "false", "n", "f" then mode = "'OFF'"
24
+ else
25
+ raise SQLite3::Exception, "unrecognized pragma parameter #{mode.inspect}"
26
+ end
30
27
  when true, 1
31
- mode = "ON"
28
+ mode = "ON"
32
29
  when false, 0, nil
33
- mode = "OFF"
30
+ mode = "OFF"
34
31
  else
35
- raise Exception,
36
- "unrecognized pragma parameter #{mode.inspect}"
32
+ raise SQLite3::Exception, "unrecognized pragma parameter #{mode.inspect}"
37
33
  end
38
34
 
39
- execute( "PRAGMA #{name}=#{mode}" )
35
+ execute("PRAGMA #{name}=#{mode}")
40
36
  end
41
37
 
42
38
  # Requests the given pragma (and parameters), and if the block is given,
43
39
  # each row of the result set will be yielded to it. Otherwise, the results
44
40
  # are returned as an array.
45
- def get_query_pragma( name, *params, &block ) # :yields: row
41
+ def get_query_pragma(name, *params, &block) # :yields: row
46
42
  if params.empty?
47
- execute( "PRAGMA #{name}", &block )
43
+ execute("PRAGMA #{name}", &block)
48
44
  else
49
45
  args = "'" + params.join("','") + "'"
50
- execute( "PRAGMA #{name}( #{args} )", &block )
46
+ execute("PRAGMA #{name}( #{args} )", &block)
51
47
  end
52
48
  end
53
49
 
54
50
  # Return the value of the given pragma.
55
- def get_enum_pragma( name )
56
- get_first_value( "PRAGMA #{name}" )
51
+ def get_enum_pragma(name)
52
+ get_first_value("PRAGMA #{name}")
57
53
  end
58
54
 
59
55
  # Set the value of the given pragma to +mode+. The +mode+ parameter must
@@ -61,51 +57,52 @@ module SQLite3
61
57
  # the array is another array comprised of elements in the enumeration that
62
58
  # have duplicate values. See #synchronous, #default_synchronous,
63
59
  # #temp_store, and #default_temp_store for usage examples.
64
- def set_enum_pragma( name, mode, enums )
60
+ def set_enum_pragma(name, mode, enums)
65
61
  match = enums.find { |p| p.find { |i| i.to_s.downcase == mode.to_s.downcase } }
66
- raise Exception,
67
- "unrecognized #{name} #{mode.inspect}" unless match
68
- execute( "PRAGMA #{name}='#{match.first.upcase}'" )
62
+ unless match
63
+ raise SQLite3::Exception, "unrecognized #{name} #{mode.inspect}"
64
+ end
65
+ execute("PRAGMA #{name}='#{match.first.upcase}'")
69
66
  end
70
67
 
71
68
  # Returns the value of the given pragma as an integer.
72
- def get_int_pragma( name )
73
- get_first_value( "PRAGMA #{name}" ).to_i
69
+ def get_int_pragma(name)
70
+ get_first_value("PRAGMA #{name}").to_i
74
71
  end
75
72
 
76
73
  # Set the value of the given pragma to the integer value of the +value+
77
74
  # parameter.
78
- def set_int_pragma( name, value )
79
- execute( "PRAGMA #{name}=#{value.to_i}" )
75
+ def set_int_pragma(name, value)
76
+ execute("PRAGMA #{name}=#{value.to_i}")
80
77
  end
81
78
 
82
79
  # The enumeration of valid synchronous modes.
83
- SYNCHRONOUS_MODES = [ [ 'full', 2 ], [ 'normal', 1 ], [ 'off', 0 ] ]
80
+ SYNCHRONOUS_MODES = [["full", 2], ["normal", 1], ["off", 0]]
84
81
 
85
82
  # The enumeration of valid temp store modes.
86
- TEMP_STORE_MODES = [ [ 'default', 0 ], [ 'file', 1 ], [ 'memory', 2 ] ]
83
+ TEMP_STORE_MODES = [["default", 0], ["file", 1], ["memory", 2]]
87
84
 
88
85
  # The enumeration of valid auto vacuum modes.
89
- AUTO_VACUUM_MODES = [ [ 'none', 0 ], [ 'full', 1 ], [ 'incremental', 2 ] ]
86
+ AUTO_VACUUM_MODES = [["none", 0], ["full", 1], ["incremental", 2]]
90
87
 
91
88
  # The list of valid journaling modes.
92
- JOURNAL_MODES = [ [ 'delete' ], [ 'truncate' ], [ 'persist' ], [ 'memory' ],
93
- [ 'wal' ], [ 'off' ] ]
89
+ JOURNAL_MODES = [["delete"], ["truncate"], ["persist"], ["memory"],
90
+ ["wal"], ["off"]]
94
91
 
95
92
  # The list of valid locking modes.
96
- LOCKING_MODES = [ [ 'normal' ], [ 'exclusive' ] ]
93
+ LOCKING_MODES = [["normal"], ["exclusive"]]
97
94
 
98
95
  # The list of valid encodings.
99
- ENCODINGS = [ [ 'utf-8' ], [ 'utf-16' ], [ 'utf-16le' ], [ 'utf-16be ' ] ]
96
+ ENCODINGS = [["utf-8"], ["utf-16"], ["utf-16le"], ["utf-16be"]]
100
97
 
101
98
  # The list of valid WAL checkpoints.
102
- WAL_CHECKPOINTS = [ [ 'passive' ], [ 'full' ], [ 'restart' ], [ 'truncate' ] ]
99
+ WAL_CHECKPOINTS = [["passive"], ["full"], ["restart"], ["truncate"]]
103
100
 
104
101
  def application_id
105
102
  get_int_pragma "application_id"
106
103
  end
107
104
 
108
- def application_id=( integer )
105
+ def application_id=(integer)
109
106
  set_int_pragma "application_id", integer
110
107
  end
111
108
 
@@ -113,7 +110,7 @@ module SQLite3
113
110
  get_enum_pragma "auto_vacuum"
114
111
  end
115
112
 
116
- def auto_vacuum=( mode )
113
+ def auto_vacuum=(mode)
117
114
  set_enum_pragma "auto_vacuum", mode, AUTO_VACUUM_MODES
118
115
  end
119
116
 
@@ -121,7 +118,7 @@ module SQLite3
121
118
  get_boolean_pragma "automatic_index"
122
119
  end
123
120
 
124
- def automatic_index=( mode )
121
+ def automatic_index=(mode)
125
122
  set_boolean_pragma "automatic_index", mode
126
123
  end
127
124
 
@@ -129,7 +126,7 @@ module SQLite3
129
126
  get_int_pragma "busy_timeout"
130
127
  end
131
128
 
132
- def busy_timeout=( milliseconds )
129
+ def busy_timeout=(milliseconds)
133
130
  set_int_pragma "busy_timeout", milliseconds
134
131
  end
135
132
 
@@ -137,7 +134,7 @@ module SQLite3
137
134
  get_int_pragma "cache_size"
138
135
  end
139
136
 
140
- def cache_size=( size )
137
+ def cache_size=(size)
141
138
  set_int_pragma "cache_size", size
142
139
  end
143
140
 
@@ -145,11 +142,11 @@ module SQLite3
145
142
  get_boolean_pragma "cache_spill"
146
143
  end
147
144
 
148
- def cache_spill=( mode )
145
+ def cache_spill=(mode)
149
146
  set_boolean_pragma "cache_spill", mode
150
147
  end
151
148
 
152
- def case_sensitive_like=( mode )
149
+ def case_sensitive_like=(mode)
153
150
  set_boolean_pragma "case_sensitive_like", mode
154
151
  end
155
152
 
@@ -157,7 +154,7 @@ module SQLite3
157
154
  get_boolean_pragma "cell_size_check"
158
155
  end
159
156
 
160
- def cell_size_check=( mode )
157
+ def cell_size_check=(mode)
161
158
  set_boolean_pragma "cell_size_check", mode
162
159
  end
163
160
 
@@ -165,15 +162,15 @@ module SQLite3
165
162
  get_boolean_pragma "checkpoint_fullfsync"
166
163
  end
167
164
 
168
- def checkpoint_fullfsync=( mode )
165
+ def checkpoint_fullfsync=(mode)
169
166
  set_boolean_pragma "checkpoint_fullfsync", mode
170
167
  end
171
168
 
172
- def collation_list( &block ) # :yields: row
169
+ def collation_list(&block) # :yields: row
173
170
  get_query_pragma "collation_list", &block
174
171
  end
175
172
 
176
- def compile_options( &block ) # :yields: row
173
+ def compile_options(&block) # :yields: row
177
174
  get_query_pragma "compile_options", &block
178
175
  end
179
176
 
@@ -181,7 +178,7 @@ module SQLite3
181
178
  get_boolean_pragma "count_changes"
182
179
  end
183
180
 
184
- def count_changes=( mode )
181
+ def count_changes=(mode)
185
182
  set_boolean_pragma "count_changes", mode
186
183
  end
187
184
 
@@ -189,7 +186,7 @@ module SQLite3
189
186
  get_int_pragma "data_version"
190
187
  end
191
188
 
192
- def database_list( &block ) # :yields: row
189
+ def database_list(&block) # :yields: row
193
190
  get_query_pragma "database_list", &block
194
191
  end
195
192
 
@@ -197,7 +194,7 @@ module SQLite3
197
194
  get_int_pragma "default_cache_size"
198
195
  end
199
196
 
200
- def default_cache_size=( size )
197
+ def default_cache_size=(size)
201
198
  set_int_pragma "default_cache_size", size
202
199
  end
203
200
 
@@ -205,7 +202,7 @@ module SQLite3
205
202
  get_enum_pragma "default_synchronous"
206
203
  end
207
204
 
208
- def default_synchronous=( mode )
205
+ def default_synchronous=(mode)
209
206
  set_enum_pragma "default_synchronous", mode, SYNCHRONOUS_MODES
210
207
  end
211
208
 
@@ -213,7 +210,7 @@ module SQLite3
213
210
  get_enum_pragma "default_temp_store"
214
211
  end
215
212
 
216
- def default_temp_store=( mode )
213
+ def default_temp_store=(mode)
217
214
  set_enum_pragma "default_temp_store", mode, TEMP_STORE_MODES
218
215
  end
219
216
 
@@ -221,7 +218,7 @@ module SQLite3
221
218
  get_boolean_pragma "defer_foreign_keys"
222
219
  end
223
220
 
224
- def defer_foreign_keys=( mode )
221
+ def defer_foreign_keys=(mode)
225
222
  set_boolean_pragma "defer_foreign_keys", mode
226
223
  end
227
224
 
@@ -229,15 +226,15 @@ module SQLite3
229
226
  get_enum_pragma "encoding"
230
227
  end
231
228
 
232
- def encoding=( mode )
229
+ def encoding=(mode)
233
230
  set_enum_pragma "encoding", mode, ENCODINGS
234
231
  end
235
232
 
236
- def foreign_key_check( *table, &block ) # :yields: row
233
+ def foreign_key_check(*table, &block) # :yields: row
237
234
  get_query_pragma "foreign_key_check", *table, &block
238
235
  end
239
236
 
240
- def foreign_key_list( table, &block ) # :yields: row
237
+ def foreign_key_list(table, &block) # :yields: row
241
238
  get_query_pragma "foreign_key_list", table, &block
242
239
  end
243
240
 
@@ -245,7 +242,7 @@ module SQLite3
245
242
  get_boolean_pragma "foreign_keys"
246
243
  end
247
244
 
248
- def foreign_keys=( mode )
245
+ def foreign_keys=(mode)
249
246
  set_boolean_pragma "foreign_keys", mode
250
247
  end
251
248
 
@@ -257,7 +254,7 @@ module SQLite3
257
254
  get_boolean_pragma "full_column_names"
258
255
  end
259
256
 
260
- def full_column_names=( mode )
257
+ def full_column_names=(mode)
261
258
  set_boolean_pragma "full_column_names", mode
262
259
  end
263
260
 
@@ -265,31 +262,31 @@ module SQLite3
265
262
  get_boolean_pragma "fullfsync"
266
263
  end
267
264
 
268
- def fullfsync=( mode )
265
+ def fullfsync=(mode)
269
266
  set_boolean_pragma "fullfsync", mode
270
267
  end
271
268
 
272
- def ignore_check_constraints=( mode )
269
+ def ignore_check_constraints=(mode)
273
270
  set_boolean_pragma "ignore_check_constraints", mode
274
271
  end
275
272
 
276
- def incremental_vacuum( pages, &block ) # :yields: row
273
+ def incremental_vacuum(pages, &block) # :yields: row
277
274
  get_query_pragma "incremental_vacuum", pages, &block
278
275
  end
279
276
 
280
- def index_info( index, &block ) # :yields: row
277
+ def index_info(index, &block) # :yields: row
281
278
  get_query_pragma "index_info", index, &block
282
279
  end
283
280
 
284
- def index_list( table, &block ) # :yields: row
281
+ def index_list(table, &block) # :yields: row
285
282
  get_query_pragma "index_list", table, &block
286
283
  end
287
284
 
288
- def index_xinfo( index, &block ) # :yields: row
285
+ def index_xinfo(index, &block) # :yields: row
289
286
  get_query_pragma "index_xinfo", index, &block
290
287
  end
291
288
 
292
- def integrity_check( *num_errors, &block ) # :yields: row
289
+ def integrity_check(*num_errors, &block) # :yields: row
293
290
  get_query_pragma "integrity_check", *num_errors, &block
294
291
  end
295
292
 
@@ -297,7 +294,7 @@ module SQLite3
297
294
  get_enum_pragma "journal_mode"
298
295
  end
299
296
 
300
- def journal_mode=( mode )
297
+ def journal_mode=(mode)
301
298
  set_enum_pragma "journal_mode", mode, JOURNAL_MODES
302
299
  end
303
300
 
@@ -305,7 +302,7 @@ module SQLite3
305
302
  get_int_pragma "journal_size_limit"
306
303
  end
307
304
 
308
- def journal_size_limit=( size )
305
+ def journal_size_limit=(size)
309
306
  set_int_pragma "journal_size_limit", size
310
307
  end
311
308
 
@@ -313,7 +310,7 @@ module SQLite3
313
310
  get_boolean_pragma "legacy_file_format"
314
311
  end
315
312
 
316
- def legacy_file_format=( mode )
313
+ def legacy_file_format=(mode)
317
314
  set_boolean_pragma "legacy_file_format", mode
318
315
  end
319
316
 
@@ -321,7 +318,7 @@ module SQLite3
321
318
  get_enum_pragma "locking_mode"
322
319
  end
323
320
 
324
- def locking_mode=( mode )
321
+ def locking_mode=(mode)
325
322
  set_enum_pragma "locking_mode", mode, LOCKING_MODES
326
323
  end
327
324
 
@@ -329,7 +326,7 @@ module SQLite3
329
326
  get_int_pragma "max_page_count"
330
327
  end
331
328
 
332
- def max_page_count=( size )
329
+ def max_page_count=(size)
333
330
  set_int_pragma "max_page_count", size
334
331
  end
335
332
 
@@ -337,10 +334,24 @@ module SQLite3
337
334
  get_int_pragma "mmap_size"
338
335
  end
339
336
 
340
- def mmap_size=( size )
337
+ def mmap_size=(size)
341
338
  set_int_pragma "mmap_size", size
342
339
  end
343
340
 
341
+ # Attempt to optimize the database.
342
+ #
343
+ # To customize the optimization options, pass +bitmask+ with a combination
344
+ # of the Constants::Optimize masks.
345
+ #
346
+ # See https://www.sqlite.org/pragma.html#pragma_optimize for more information.
347
+ def optimize(bitmask = nil)
348
+ if bitmask
349
+ set_int_pragma "optimize", bitmask
350
+ else
351
+ execute("PRAGMA optimize")
352
+ end
353
+ end
354
+
344
355
  def page_count
345
356
  get_int_pragma "page_count"
346
357
  end
@@ -349,11 +360,11 @@ module SQLite3
349
360
  get_int_pragma "page_size"
350
361
  end
351
362
 
352
- def page_size=( size )
363
+ def page_size=(size)
353
364
  set_int_pragma "page_size", size
354
365
  end
355
366
 
356
- def parser_trace=( mode )
367
+ def parser_trace=(mode)
357
368
  set_boolean_pragma "parser_trace", mode
358
369
  end
359
370
 
@@ -361,11 +372,11 @@ module SQLite3
361
372
  get_boolean_pragma "query_only"
362
373
  end
363
374
 
364
- def query_only=( mode )
375
+ def query_only=(mode)
365
376
  set_boolean_pragma "query_only", mode
366
377
  end
367
378
 
368
- def quick_check( *num_errors, &block ) # :yields: row
379
+ def quick_check(*num_errors, &block) # :yields: row
369
380
  get_query_pragma "quick_check", *num_errors, &block
370
381
  end
371
382
 
@@ -373,7 +384,7 @@ module SQLite3
373
384
  get_boolean_pragma "read_uncommitted"
374
385
  end
375
386
 
376
- def read_uncommitted=( mode )
387
+ def read_uncommitted=(mode)
377
388
  set_boolean_pragma "read_uncommitted", mode
378
389
  end
379
390
 
@@ -381,7 +392,7 @@ module SQLite3
381
392
  get_boolean_pragma "recursive_triggers"
382
393
  end
383
394
 
384
- def recursive_triggers=( mode )
395
+ def recursive_triggers=(mode)
385
396
  set_boolean_pragma "recursive_triggers", mode
386
397
  end
387
398
 
@@ -389,7 +400,7 @@ module SQLite3
389
400
  get_boolean_pragma "reverse_unordered_selects"
390
401
  end
391
402
 
392
- def reverse_unordered_selects=( mode )
403
+ def reverse_unordered_selects=(mode)
393
404
  set_boolean_pragma "reverse_unordered_selects", mode
394
405
  end
395
406
 
@@ -397,7 +408,7 @@ module SQLite3
397
408
  get_int_pragma "schema_cookie"
398
409
  end
399
410
 
400
- def schema_cookie=( cookie )
411
+ def schema_cookie=(cookie)
401
412
  set_int_pragma "schema_cookie", cookie
402
413
  end
403
414
 
@@ -405,7 +416,7 @@ module SQLite3
405
416
  get_int_pragma "schema_version"
406
417
  end
407
418
 
408
- def schema_version=( version )
419
+ def schema_version=(version)
409
420
  set_int_pragma "schema_version", version
410
421
  end
411
422
 
@@ -413,7 +424,7 @@ module SQLite3
413
424
  get_boolean_pragma "secure_delete"
414
425
  end
415
426
 
416
- def secure_delete=( mode )
427
+ def secure_delete=(mode)
417
428
  set_boolean_pragma "secure_delete", mode
418
429
  end
419
430
 
@@ -421,23 +432,23 @@ module SQLite3
421
432
  get_boolean_pragma "short_column_names"
422
433
  end
423
434
 
424
- def short_column_names=( mode )
435
+ def short_column_names=(mode)
425
436
  set_boolean_pragma "short_column_names", mode
426
437
  end
427
438
 
428
439
  def shrink_memory
429
- execute( "PRAGMA shrink_memory" )
440
+ execute("PRAGMA shrink_memory")
430
441
  end
431
442
 
432
443
  def soft_heap_limit
433
444
  get_int_pragma "soft_heap_limit"
434
445
  end
435
446
 
436
- def soft_heap_limit=( mode )
447
+ def soft_heap_limit=(mode)
437
448
  set_int_pragma "soft_heap_limit", mode
438
449
  end
439
450
 
440
- def stats( &block ) # :yields: row
451
+ def stats(&block) # :yields: row
441
452
  get_query_pragma "stats", &block
442
453
  end
443
454
 
@@ -445,7 +456,7 @@ module SQLite3
445
456
  get_enum_pragma "synchronous"
446
457
  end
447
458
 
448
- def synchronous=( mode )
459
+ def synchronous=(mode)
449
460
  set_enum_pragma "synchronous", mode, SYNCHRONOUS_MODES
450
461
  end
451
462
 
@@ -453,7 +464,7 @@ module SQLite3
453
464
  get_enum_pragma "temp_store"
454
465
  end
455
466
 
456
- def temp_store=( mode )
467
+ def temp_store=(mode)
457
468
  set_enum_pragma "temp_store", mode, TEMP_STORE_MODES
458
469
  end
459
470
 
@@ -461,7 +472,7 @@ module SQLite3
461
472
  get_int_pragma "threads"
462
473
  end
463
474
 
464
- def threads=( count )
475
+ def threads=(count)
465
476
  set_int_pragma "threads", count
466
477
  end
467
478
 
@@ -469,7 +480,7 @@ module SQLite3
469
480
  get_int_pragma "user_cookie"
470
481
  end
471
482
 
472
- def user_cookie=( cookie )
483
+ def user_cookie=(cookie)
473
484
  set_int_pragma "user_cookie", cookie
474
485
  end
475
486
 
@@ -477,19 +488,19 @@ module SQLite3
477
488
  get_int_pragma "user_version"
478
489
  end
479
490
 
480
- def user_version=( version )
491
+ def user_version=(version)
481
492
  set_int_pragma "user_version", version
482
493
  end
483
494
 
484
- def vdbe_addoptrace=( mode )
495
+ def vdbe_addoptrace=(mode)
485
496
  set_boolean_pragma "vdbe_addoptrace", mode
486
497
  end
487
498
 
488
- def vdbe_debug=( mode )
499
+ def vdbe_debug=(mode)
489
500
  set_boolean_pragma "vdbe_debug", mode
490
501
  end
491
502
 
492
- def vdbe_listing=( mode )
503
+ def vdbe_listing=(mode)
493
504
  set_boolean_pragma "vdbe_listing", mode
494
505
  end
495
506
 
@@ -497,7 +508,7 @@ module SQLite3
497
508
  get_boolean_pragma "vdbe_trace"
498
509
  end
499
510
 
500
- def vdbe_trace=( mode )
511
+ def vdbe_trace=(mode)
501
512
  set_boolean_pragma "vdbe_trace", mode
502
513
  end
503
514
 
@@ -505,7 +516,7 @@ module SQLite3
505
516
  get_int_pragma "wal_autocheckpoint"
506
517
  end
507
518
 
508
- def wal_autocheckpoint=( mode )
519
+ def wal_autocheckpoint=(mode)
509
520
  set_int_pragma "wal_autocheckpoint", mode
510
521
  end
511
522
 
@@ -513,11 +524,11 @@ module SQLite3
513
524
  get_enum_pragma "wal_checkpoint"
514
525
  end
515
526
 
516
- def wal_checkpoint=( mode )
527
+ def wal_checkpoint=(mode)
517
528
  set_enum_pragma "wal_checkpoint", mode, WAL_CHECKPOINTS
518
529
  end
519
530
 
520
- def writable_schema=( mode )
531
+ def writable_schema=(mode)
521
532
  set_boolean_pragma "writable_schema", mode
522
533
  end
523
534
 
@@ -525,7 +536,7 @@ module SQLite3
525
536
  # Returns information about +table+. Yields each row of table information
526
537
  # if a block is provided.
527
538
  def table_info table
528
- stmt = prepare "PRAGMA table_info(#{table})"
539
+ stmt = prepare "PRAGMA table_info(#{table})"
529
540
  columns = stmt.columns
530
541
 
531
542
  needs_tweak_default =
@@ -533,21 +544,15 @@ module SQLite3
533
544
 
534
545
  result = [] unless block_given?
535
546
  stmt.each do |row|
536
- new_row = Hash[columns.zip(row)]
537
-
538
- # FIXME: This should be removed but is required for older versions
539
- # of rails
540
- if(Object.const_defined?(:ActiveRecord))
541
- new_row['notnull'] = new_row['notnull'].to_s
542
- end
547
+ new_row = columns.zip(row).to_h
543
548
 
544
549
  tweak_default(new_row) if needs_tweak_default
545
550
 
546
551
  # Ensure the type value is downcased. On Mac and Windows
547
552
  # platforms this value is now being returned as all upper
548
553
  # case.
549
- if new_row['type']
550
- new_row['type'] = new_row['type'].downcase
554
+ if new_row["type"]
555
+ new_row["type"] = new_row["type"].downcase
551
556
  end
552
557
 
553
558
  if block_given?
@@ -563,33 +568,32 @@ module SQLite3
563
568
 
564
569
  private
565
570
 
566
- # Compares two version strings
567
- def version_compare(v1, v2)
568
- v1 = v1.split(".").map { |i| i.to_i }
569
- v2 = v2.split(".").map { |i| i.to_i }
570
- parts = [v1.length, v2.length].max
571
- v1.push 0 while v1.length < parts
572
- v2.push 0 while v2.length < parts
573
- v1.zip(v2).each do |a,b|
574
- return -1 if a < b
575
- return 1 if a > b
576
- end
577
- return 0
571
+ # Compares two version strings
572
+ def version_compare(v1, v2)
573
+ v1 = v1.split(".").map { |i| i.to_i }
574
+ v2 = v2.split(".").map { |i| i.to_i }
575
+ parts = [v1.length, v2.length].max
576
+ v1.push 0 while v1.length < parts
577
+ v2.push 0 while v2.length < parts
578
+ v1.zip(v2).each do |a, b|
579
+ return -1 if a < b
580
+ return 1 if a > b
578
581
  end
579
-
580
- # Since SQLite 3.3.8, the table_info pragma has returned the default
581
- # value of the row as a quoted SQL value. This method essentially
582
- # unquotes those values.
583
- def tweak_default(hash)
584
- case hash["dflt_value"]
585
- when /^null$/i
586
- hash["dflt_value"] = nil
587
- when /^'(.*)'$/m
588
- hash["dflt_value"] = $1.gsub(/''/, "'")
589
- when /^"(.*)"$/m
590
- hash["dflt_value"] = $1.gsub(/""/, '"')
591
- end
582
+ 0
583
+ end
584
+
585
+ # Since SQLite 3.3.8, the table_info pragma has returned the default
586
+ # value of the row as a quoted SQL value. This method essentially
587
+ # unquotes those values.
588
+ def tweak_default(hash)
589
+ case hash["dflt_value"]
590
+ when /^null$/i
591
+ hash["dflt_value"] = nil
592
+ when /^'(.*)'$/m
593
+ hash["dflt_value"] = $1.gsub("''", "'")
594
+ when /^"(.*)"$/m
595
+ hash["dflt_value"] = $1.gsub('""', '"')
592
596
  end
597
+ end
593
598
  end
594
-
595
599
  end