Module: SQLite3::Pragmas
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Defined in: | lib/sqlite3/pragmas.rb |
Overview
This module is intended for inclusion solely by the Database
class. It defines convenience methods for the various pragmas supported by ::SQLite3
.
For a detailed description of these pragmas, see the ::SQLite3
documentation at sqlite.org/pragma.html.
Constant Summary
-
AUTO_VACUUM_MODES =
The enumeration of valid auto vacuum modes.
{ "none" => 0, "full" => 1, "incremental" => 2 }.freeze
-
ENCODINGS =
The list of valid encodings.
{ "utf-8" => "utf-8", "utf-16" => "utf-16", "utf-16le" => "utf-16le", "utf-16be" => "utf-16be" }.freeze
-
JOURNAL_MODES =
The list of valid journaling modes.
{ "delete" => "delete", "truncate" => "truncate", "persist" => "persist", "memory" => "memory", "wal" => "wal", "off" => "off" }.freeze
-
LOCKING_MODES =
The list of valid locking modes.
{ "normal" => "normal", "exclusive" => "exclusive" }.freeze
-
SYNCHRONOUS_MODES =
The enumeration of valid synchronous modes.
{ "full" => 2, "normal" => 1, "off" => 0 }.freeze
-
TEMP_STORE_MODES =
The enumeration of valid temp store modes.
{ "default" => 0, "file" => 1, "memory" => 2 }.freeze
-
WAL_CHECKPOINTS =
The list of valid WAL checkpoints.
{ "passive" => "passive", "full" => "full", "restart" => "restart", "truncate" => "truncate" }.freeze
Instance Attribute Summary
- #application_id rw
- #application_id=(integer) rw
- #auto_vacuum rw
- #auto_vacuum=(mode) rw
- #automatic_index rw
- #automatic_index=(mode) rw
- #busy_timeout rw
- #busy_timeout=(milliseconds) (also: #busy_timeout) rw
- #cache_size rw
- #cache_size=(size) rw
- #cache_spill rw
- #cache_spill=(mode) rw
- #case_sensitive_like=(mode) writeonly
- #cell_size_check rw
- #cell_size_check=(mode) rw
- #checkpoint_fullfsync rw
- #checkpoint_fullfsync=(mode) rw
- #count_changes rw
- #count_changes=(mode) rw
- #default_cache_size rw
- #default_cache_size=(size) rw
- #default_synchronous rw
- #default_synchronous=(mode) rw
- #default_temp_store rw
- #default_temp_store=(mode) rw
- #defer_foreign_keys rw
- #defer_foreign_keys=(mode) rw
- #encoding rw
- #encoding=(mode) rw
- #foreign_keys rw
- #foreign_keys=(mode) rw
- #full_column_names rw
- #full_column_names=(mode) rw
- #fullfsync rw
- #fullfsync=(mode) rw
- #ignore_check_constraints=(mode) writeonly
- #journal_mode rw
- #journal_mode=(mode) rw
- #journal_size_limit rw
- #journal_size_limit=(size) rw
- #legacy_file_format rw
- #legacy_file_format=(mode) rw
- #locking_mode rw
- #locking_mode=(mode) rw
- #max_page_count rw
- #max_page_count=(size) rw
- #mmap_size rw
- #mmap_size=(size) rw
- #page_size rw
- #page_size=(size) rw
- #parser_trace=(mode) writeonly
- #query_only rw
- #query_only=(mode) rw
- #read_uncommitted rw
- #read_uncommitted=(mode) rw
- #recursive_triggers rw
- #recursive_triggers=(mode) rw
- #reverse_unordered_selects rw
- #reverse_unordered_selects=(mode) rw
- #schema_cookie rw
- #schema_cookie=(cookie) rw
- #schema_version rw
- #schema_version=(version) rw
- #secure_delete rw
- #secure_delete=(mode) rw
- #short_column_names rw
- #short_column_names=(mode) rw
- #soft_heap_limit rw
- #soft_heap_limit=(mode) rw
- #synchronous rw
- #synchronous=(mode) rw
- #temp_store rw
- #temp_store=(mode) rw
- #threads rw
- #threads=(count) rw
- #user_cookie rw
- #user_cookie=(cookie) rw
- #user_version rw
- #user_version=(version) rw
- #vdbe_addoptrace=(mode) writeonly
- #vdbe_debug=(mode) writeonly
- #vdbe_listing=(mode) writeonly
- #vdbe_trace rw
- #vdbe_trace=(mode) rw
- #wal_autocheckpoint rw
- #wal_autocheckpoint=(mode) rw
- #wal_checkpoint rw
- #wal_checkpoint=(mode) rw
- #writable_schema=(mode) writeonly
Instance Method Summary
-
#collation_list(&block)
:yields: row.
-
#compile_options(&block)
:yields: row.
- #data_version
-
#database_list(&block)
:yields: row.
-
#foreign_key_check(*table, &block)
:yields: row.
-
#foreign_key_list(table, &block)
:yields: row.
- #freelist_count
-
#get_boolean_pragma(name)
Returns
true
orfalse
depending on the value of the named pragma. -
#get_enum_pragma(name)
Return the value of the given pragma.
-
#get_int_pragma(name)
Returns the value of the given pragma as an integer.
-
#get_query_pragma(name, *params, &block)
Requests the given pragma (and parameters), and if the block is given, each row of the result set will be yielded to it.
-
#incremental_vacuum(pages, &block)
:yields: row.
-
#index_info(index, &block)
:yields: row.
-
#index_list(table, &block)
:yields: row.
-
#index_xinfo(index, &block)
:yields: row.
-
#integrity_check(*num_errors, &block)
:yields: row.
-
#optimize(bitmask = nil)
Attempt to optimize the database.
- #page_count
-
#quick_check(*num_errors, &block)
:yields: row.
-
#set_boolean_pragma(name, mode)
Sets the given pragma to the given boolean value.
-
#set_enum_pragma(name, mode, enums)
Set the value of the given pragma to
mode
. -
#set_int_pragma(name, value)
Set the value of the given pragma to the integer value of the
value
parameter. - #shrink_memory
-
#stats(&block)
:yields: row.
-
#table_info(table)
Returns information about
table
. - #set_string_pragma(pragma_name, value, valid_values) private
-
#tweak_default(hash)
private
Since SQLite 3.3.8, the table_info pragma has returned the default value of the row as a quoted SQL value.
-
#version_compare(v1, v2)
private
Compares two version strings.
Instance Attribute Details
#application_id (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 143
def application_id get_int_pragma "application_id" end
#application_id=(integer) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 147
def application_id=(integer) set_int_pragma "application_id", integer end
#auto_vacuum (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 151
def auto_vacuum get_enum_pragma "auto_vacuum" end
#auto_vacuum=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 155
def auto_vacuum=(mode) set_enum_pragma "auto_vacuum", mode, AUTO_VACUUM_MODES end
#automatic_index (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 159
def automatic_index get_boolean_pragma "automatic_index" end
#automatic_index=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 163
def automatic_index=(mode) set_boolean_pragma "automatic_index", mode end
#busy_timeout (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 167
def busy_timeout get_int_pragma "busy_timeout" end
#busy_timeout=(milliseconds) (rw) Also known as: #busy_timeout
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 171
def busy_timeout=(milliseconds) set_int_pragma "busy_timeout", milliseconds end
#cache_size (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 175
def cache_size get_int_pragma "cache_size" end
#cache_size=(size) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 179
def cache_size=(size) set_int_pragma "cache_size", size end
#cache_spill (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 183
def cache_spill get_boolean_pragma "cache_spill" end
#cache_spill=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 187
def cache_spill=(mode) set_boolean_pragma "cache_spill", mode end
#case_sensitive_like=(mode) (writeonly)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 191
def case_sensitive_like=(mode) set_boolean_pragma "case_sensitive_like", mode end
#cell_size_check (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 195
def cell_size_check get_boolean_pragma "cell_size_check" end
#cell_size_check=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 199
def cell_size_check=(mode) set_boolean_pragma "cell_size_check", mode end
#checkpoint_fullfsync (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 203
def checkpoint_fullfsync get_boolean_pragma "checkpoint_fullfsync" end
#checkpoint_fullfsync=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 207
def checkpoint_fullfsync=(mode) set_boolean_pragma "checkpoint_fullfsync", mode end
#count_changes (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 219
def count_changes get_boolean_pragma "count_changes" end
#count_changes=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 223
def count_changes=(mode) set_boolean_pragma "count_changes", mode end
#default_cache_size (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 235
def default_cache_size get_int_pragma "default_cache_size" end
#default_cache_size=(size) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 239
def default_cache_size=(size) set_int_pragma "default_cache_size", size end
#default_synchronous (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 243
def default_synchronous get_enum_pragma "default_synchronous" end
#default_synchronous=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 247
def default_synchronous=(mode) set_enum_pragma "default_synchronous", mode, SYNCHRONOUS_MODES end
#default_temp_store (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 251
def default_temp_store get_enum_pragma "default_temp_store" end
#default_temp_store=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 255
def default_temp_store=(mode) set_enum_pragma "default_temp_store", mode, TEMP_STORE_MODES end
#defer_foreign_keys (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 259
def defer_foreign_keys get_boolean_pragma "defer_foreign_keys" end
#defer_foreign_keys=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 263
def defer_foreign_keys=(mode) set_boolean_pragma "defer_foreign_keys", mode end
#encoding (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 267
def encoding get_enum_pragma "encoding" end
#encoding=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 271
def encoding=(mode) set_string_pragma "encoding", mode, ENCODINGS end
#foreign_keys (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 283
def foreign_keys get_boolean_pragma "foreign_keys" end
#foreign_keys=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 287
def foreign_keys=(mode) set_boolean_pragma "foreign_keys", mode end
#full_column_names (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 295
def full_column_names get_boolean_pragma "full_column_names" end
#full_column_names=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 299
def full_column_names=(mode) set_boolean_pragma "full_column_names", mode end
#fullfsync (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 303
def fullfsync get_boolean_pragma "fullfsync" end
#fullfsync=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 307
def fullfsync=(mode) set_boolean_pragma "fullfsync", mode end
#ignore_check_constraints=(mode) (writeonly)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 311
def ignore_check_constraints=(mode) set_boolean_pragma "ignore_check_constraints", mode end
#journal_mode (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 335
def journal_mode get_enum_pragma "journal_mode" end
#journal_mode=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 339
def journal_mode=(mode) set_string_pragma "journal_mode", mode, JOURNAL_MODES end
#journal_size_limit (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 343
def journal_size_limit get_int_pragma "journal_size_limit" end
#journal_size_limit=(size) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 347
def journal_size_limit=(size) set_int_pragma "journal_size_limit", size end
#legacy_file_format (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 351
def legacy_file_format get_boolean_pragma "legacy_file_format" end
#legacy_file_format=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 355
def legacy_file_format=(mode) set_boolean_pragma "legacy_file_format", mode end
#locking_mode (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 359
def locking_mode get_enum_pragma "locking_mode" end
#locking_mode=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 363
def locking_mode=(mode) set_string_pragma "locking_mode", mode, LOCKING_MODES end
#max_page_count (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 367
def max_page_count get_int_pragma "max_page_count" end
#max_page_count=(size) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 371
def max_page_count=(size) set_int_pragma "max_page_count", size end
#mmap_size (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 375
def mmap_size get_int_pragma "mmap_size" end
#mmap_size=(size) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 379
def mmap_size=(size) set_int_pragma "mmap_size", size end
#page_size (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 401
def page_size get_int_pragma "page_size" end
#page_size=(size) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 405
def page_size=(size) set_int_pragma "page_size", size end
#parser_trace=(mode) (writeonly)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 409
def parser_trace=(mode) set_boolean_pragma "parser_trace", mode end
#query_only (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 413
def query_only get_boolean_pragma "query_only" end
#query_only=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 417
def query_only=(mode) set_boolean_pragma "query_only", mode end
#read_uncommitted (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 425
def read_uncommitted get_boolean_pragma "read_uncommitted" end
#read_uncommitted=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 429
def read_uncommitted=(mode) set_boolean_pragma "read_uncommitted", mode end
#recursive_triggers (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 433
def recursive_triggers get_boolean_pragma "recursive_triggers" end
#recursive_triggers=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 437
def recursive_triggers=(mode) set_boolean_pragma "recursive_triggers", mode end
#reverse_unordered_selects (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 441
def reverse_unordered_selects get_boolean_pragma "reverse_unordered_selects" end
#reverse_unordered_selects=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 445
def reverse_unordered_selects=(mode) set_boolean_pragma "reverse_unordered_selects", mode end
#schema_cookie (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 449
def get_int_pragma "schema_cookie" end
#schema_cookie=(cookie) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 453
def ( ) set_int_pragma "schema_cookie", end
#schema_version (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 457
def schema_version get_int_pragma "schema_version" end
#schema_version=(version) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 461
def schema_version=(version) set_int_pragma "schema_version", version end
#secure_delete (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 465
def secure_delete get_boolean_pragma "secure_delete" end
#secure_delete=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 469
def secure_delete=(mode) set_boolean_pragma "secure_delete", mode end
#short_column_names (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 473
def short_column_names get_boolean_pragma "short_column_names" end
#short_column_names=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 477
def short_column_names=(mode) set_boolean_pragma "short_column_names", mode end
#soft_heap_limit (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 485
def soft_heap_limit get_int_pragma "soft_heap_limit" end
#soft_heap_limit=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 489
def soft_heap_limit=(mode) set_int_pragma "soft_heap_limit", mode end
#synchronous (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 497
def synchronous get_enum_pragma "synchronous" end
#synchronous=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 501
def synchronous=(mode) set_enum_pragma "synchronous", mode, SYNCHRONOUS_MODES end
#temp_store (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 505
def temp_store get_enum_pragma "temp_store" end
#temp_store=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 509
def temp_store=(mode) set_enum_pragma "temp_store", mode, TEMP_STORE_MODES end
#threads (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 513
def threads get_int_pragma "threads" end
#threads=(count) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 517
def threads=(count) set_int_pragma "threads", count end
#user_cookie (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 521
def get_int_pragma "user_cookie" end
#user_cookie=(cookie) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 525
def ( ) set_int_pragma "user_cookie", end
#user_version (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 529
def user_version get_int_pragma "user_version" end
#user_version=(version) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 533
def user_version=(version) set_int_pragma "user_version", version end
#vdbe_addoptrace=(mode) (writeonly)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 537
def vdbe_addoptrace=(mode) set_boolean_pragma "vdbe_addoptrace", mode end
#vdbe_debug=(mode) (writeonly)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 541
def vdbe_debug=(mode) set_boolean_pragma "vdbe_debug", mode end
#vdbe_listing=(mode) (writeonly)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 545
def vdbe_listing=(mode) set_boolean_pragma "vdbe_listing", mode end
#vdbe_trace (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 549
def vdbe_trace get_boolean_pragma "vdbe_trace" end
#vdbe_trace=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 553
def vdbe_trace=(mode) set_boolean_pragma "vdbe_trace", mode end
#wal_autocheckpoint (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 557
def wal_autocheckpoint get_int_pragma "wal_autocheckpoint" end
#wal_autocheckpoint=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 561
def wal_autocheckpoint=(mode) set_int_pragma "wal_autocheckpoint", mode end
#wal_checkpoint (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 565
def wal_checkpoint get_enum_pragma "wal_checkpoint" end
#wal_checkpoint=(mode) (rw)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 569
def wal_checkpoint=(mode) set_string_pragma "wal_checkpoint", mode, WAL_CHECKPOINTS end
#writable_schema=(mode) (writeonly)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 573
def writable_schema=(mode) set_boolean_pragma "writable_schema", mode end
Instance Method Details
#collation_list(&block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 211
def collation_list(&block) # :yields: row get_query_pragma "collation_list", &block end
#compile_options(&block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 215
def (&block) # :yields: row get_query_pragma "compile_options", &block end
#data_version
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 227
def data_version get_int_pragma "data_version" end
#database_list(&block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 231
def database_list(&block) # :yields: row get_query_pragma "database_list", &block end
#foreign_key_check(*table, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 275
def foreign_key_check(*table, &block) # :yields: row get_query_pragma "foreign_key_check", *table, &block end
#foreign_key_list(table, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 279
def foreign_key_list(table, &block) # :yields: row get_query_pragma "foreign_key_list", table, &block end
#freelist_count
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 291
def freelist_count get_int_pragma "freelist_count" end
#get_boolean_pragma(name)
Returns true
or false
depending on the value of the named pragma.
# File 'lib/sqlite3/pragmas.rb', line 13
def get_boolean_pragma(name) get_first_value("PRAGMA #{name}") != 0 end
#get_enum_pragma(name)
Return the value of the given pragma.
# File 'lib/sqlite3/pragmas.rb', line 53
def get_enum_pragma(name) get_first_value("PRAGMA #{name}") end
#get_int_pragma(name)
Returns the value of the given pragma as an integer.
# File 'lib/sqlite3/pragmas.rb', line 80
def get_int_pragma(name) get_first_value("PRAGMA #{name}").to_i end
#get_query_pragma(name, *params, &block)
Requests the given pragma (and parameters), and if the block is given, each row of the result set will be yielded to it. Otherwise, the results are returned as an array.
# File 'lib/sqlite3/pragmas.rb', line 43
def get_query_pragma(name, *params, &block) # :yields: row if params.empty? execute("PRAGMA #{name}", &block) else args = "'" + params.join("','") + "'" execute("PRAGMA #{name}( #{args} )", &block) end end
#incremental_vacuum(pages, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 315
def incremental_vacuum(pages, &block) # :yields: row get_query_pragma "incremental_vacuum", pages, &block end
#index_info(index, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 319
def index_info(index, &block) # :yields: row get_query_pragma "index_info", index, &block end
#index_list(table, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 323
def index_list(table, &block) # :yields: row get_query_pragma "index_list", table, &block end
#index_xinfo(index, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 327
def index_xinfo(index, &block) # :yields: row get_query_pragma "index_xinfo", index, &block end
#integrity_check(*num_errors, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 331
def integrity_check(*num_errors, &block) # :yields: row get_query_pragma "integrity_check", *num_errors, &block end
#optimize(bitmask = nil)
Attempt to optimize the database.
To customize the optimization options, pass bitmask
with a combination of the Constants::Optimize
masks.
See www.sqlite.org/pragma.html#pragma_optimize for more information.
# File 'lib/sqlite3/pragmas.rb', line 389
def optimize(bitmask = nil) if bitmask set_int_pragma "optimize", bitmask else execute("PRAGMA optimize") end end
#page_count
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 397
def page_count get_int_pragma "page_count" end
#quick_check(*num_errors, &block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 421
def quick_check(*num_errors, &block) # :yields: row get_query_pragma "quick_check", *num_errors, &block end
#set_boolean_pragma(name, mode)
Sets the given pragma to the given boolean value. The value itself may be true
or false
, or any other commonly used string or integer that represents truth.
# File 'lib/sqlite3/pragmas.rb', line 20
def set_boolean_pragma(name, mode) case mode when String case mode.downcase when "on", "yes", "true", "y", "t" then mode = "'ON'" when "off", "no", "false", "n", "f" then mode = "'OFF'" else raise SQLite3::Exception, "unrecognized pragma parameter #{mode.inspect}" end when true, 1 mode = "ON" when false, 0, nil mode = "OFF" else raise SQLite3::Exception, "unrecognized pragma parameter #{mode.inspect}" end execute("PRAGMA #{name}=#{mode}") end
#set_enum_pragma(name, mode, enums)
Set the value of the given pragma to mode
. The mode
parameter must conform to one of the values in the given enum
array. Each entry in the array is another array comprised of elements in the enumeration that have duplicate values. See #synchronous, #default_synchronous, #temp_store, and #default_temp_store for usage examples.
# File 'lib/sqlite3/pragmas.rb', line 62
def set_enum_pragma(name, mode, enums) match = if enums.is_a?(Array) # maybe deprecate this? enums.find { |p| p.find { |i| i.to_s.downcase == mode.to_s.downcase } } elsif mode.is_a?(String) enums.fetch(mode.downcase) else mode end unless match raise SQLite3::Exception, "unrecognized #{name} #{mode.inspect}" end execute("PRAGMA #{name}='#{match}'") end
#set_int_pragma(name, value)
Set the value of the given pragma to the integer value of the value
parameter.
# File 'lib/sqlite3/pragmas.rb', line 86
def set_int_pragma(name, value) execute("PRAGMA #{name}=#{value.to_i}") end
#set_string_pragma(pragma_name, value, valid_values) (private)
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 613
def set_string_pragma(pragma_name, value, valid_values) valid_values.fetch(value.to_s.downcase) { raise SQLite3::Exception, "unrecognized #{pragma_name} #{value.inspect}" } set_enum_pragma(pragma_name, value, valid_values) end
#shrink_memory
[ GitHub ]# File 'lib/sqlite3/pragmas.rb', line 481
def shrink_memory execute("PRAGMA shrink_memory") end
#stats(&block)
:yields: row
# File 'lib/sqlite3/pragmas.rb', line 493
def stats(&block) # :yields: row get_query_pragma "stats", &block end
#table_info(table)
Returns information about table
. Yields each row of table information if a block is provided.
# File 'lib/sqlite3/pragmas.rb', line 580
def table_info table stmt = prepare "PRAGMA table_info(#{table})" columns = stmt.columns needs_tweak_default = version_compare(SQLite3.libversion.to_s, "3.3.7") > 0 result = [] unless block_given? stmt.each do |row| new_row = columns.zip(row).to_h tweak_default(new_row) if needs_tweak_default # Ensure the type value is downcased. On Mac and Windows # platforms this value is now being returned as all upper # case. if new_row["type"] new_row["type"] = new_row["type"].downcase end if block_given? yield new_row else result << new_row end end stmt.close result end
#tweak_default(hash) (private)
Since SQLite 3.3.8, the table_info pragma has returned the default value of the row as a quoted SQL value. This method essentially unquotes those values.
# File 'lib/sqlite3/pragmas.rb', line 637
def tweak_default(hash) case hash["dflt_value"] when /^null$/i hash["dflt_value"] = nil when /^'(.*)'$/m hash["dflt_value"] = $1.gsub("''", "'") when /^"(.*)"$/m hash["dflt_value"] = $1.gsub('""', '"') end end
#version_compare(v1, v2) (private)
Compares two version strings
# File 'lib/sqlite3/pragmas.rb', line 621
def version_compare(v1, v2) v1 = v1.split(".").map { |i| i.to_i } v2 = v2.split(".").map { |i| i.to_i } parts = [v1.length, v2.length].max v1.push 0 while v1.length < parts v2.push 0 while v2.length < parts v1.zip(v2).each do |a, b| return -1 if a < b return 1 if a > b end 0 end