sqlite3 1.3.5 → 1.3.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,7 +13,6 @@ 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
@@ -39,7 +38,6 @@ module SQLite3
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
@@ -52,13 +50,11 @@ module SQLite3
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
  ###
@@ -269,9 +577,9 @@ module SQLite3
269
577
  case hash["dflt_value"]
270
578
  when /^null$/i
271
579
  hash["dflt_value"] = nil
272
- when /^'(.*)'$/
580
+ when /^'(.*)'$/m
273
581
  hash["dflt_value"] = $1.gsub(/''/, "'")
274
- when /^"(.*)"$/
582
+ when /^"(.*)"$/m
275
583
  hash["dflt_value"] = $1.gsub(/""/, '"')
276
584
  end
277
585
  end