module SQLite3::Pragmas
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.
Constants
- AUTO_VACUUM_MODES
-
The enumeration of valid auto vacuum modes.
- ENCODINGS
-
The list of valid encodings.
- JOURNAL_MODES
-
The list of valid journaling modes.
- LOCKING_MODES
-
The list of valid locking modes.
- SYNCHRONOUS_MODES
-
The enumeration of valid synchronous modes.
- TEMP_STORE_MODES
-
The enumeration of valid temp store modes.
- WAL_CHECKPOINTS
-
The list of valid WAL checkpoints.
Public Instance Methods
Source
# File lib/sqlite3/pragmas.rb, line 143 def application_id get_int_pragma "application_id" end
Source
# File lib/sqlite3/pragmas.rb, line 147 def application_id=(integer) set_int_pragma "application_id", integer end
Source
# File lib/sqlite3/pragmas.rb, line 151 def auto_vacuum get_enum_pragma "auto_vacuum" end
Source
# File lib/sqlite3/pragmas.rb, line 155 def auto_vacuum=(mode) set_enum_pragma "auto_vacuum", mode, AUTO_VACUUM_MODES end
Source
# File lib/sqlite3/pragmas.rb, line 159 def automatic_index get_boolean_pragma "automatic_index" end
Source
# File lib/sqlite3/pragmas.rb, line 163 def automatic_index=(mode) set_boolean_pragma "automatic_index", mode end
Source
# File lib/sqlite3/pragmas.rb, line 167 def busy_timeout get_int_pragma "busy_timeout" end
Source
# File lib/sqlite3/pragmas.rb, line 171 def busy_timeout=(milliseconds) set_int_pragma "busy_timeout", milliseconds end
Source
# File lib/sqlite3/pragmas.rb, line 175 def cache_size get_int_pragma "cache_size" end
Source
# File lib/sqlite3/pragmas.rb, line 179 def cache_size=(size) set_int_pragma "cache_size", size end
Source
# File lib/sqlite3/pragmas.rb, line 183 def cache_spill get_boolean_pragma "cache_spill" end
Source
# File lib/sqlite3/pragmas.rb, line 187 def cache_spill=(mode) set_boolean_pragma "cache_spill", mode end
Source
# File lib/sqlite3/pragmas.rb, line 191 def case_sensitive_like=(mode) set_boolean_pragma "case_sensitive_like", mode end
Source
# File lib/sqlite3/pragmas.rb, line 195 def cell_size_check get_boolean_pragma "cell_size_check" end
Source
# File lib/sqlite3/pragmas.rb, line 199 def cell_size_check=(mode) set_boolean_pragma "cell_size_check", mode end
Source
# File lib/sqlite3/pragmas.rb, line 203 def checkpoint_fullfsync get_boolean_pragma "checkpoint_fullfsync" end
Source
# File lib/sqlite3/pragmas.rb, line 207 def checkpoint_fullfsync=(mode) set_boolean_pragma "checkpoint_fullfsync", mode end
Source
# File lib/sqlite3/pragmas.rb, line 211 def collation_list(&block) # :yields: row get_query_pragma "collation_list", &block end
Source
# File lib/sqlite3/pragmas.rb, line 215 def compile_options(&block) # :yields: row get_query_pragma "compile_options", &block end
Source
# File lib/sqlite3/pragmas.rb, line 219 def count_changes get_boolean_pragma "count_changes" end
Source
# File lib/sqlite3/pragmas.rb, line 223 def count_changes=(mode) set_boolean_pragma "count_changes", mode end
Source
# File lib/sqlite3/pragmas.rb, line 227 def data_version get_int_pragma "data_version" end
Source
# File lib/sqlite3/pragmas.rb, line 231 def database_list(&block) # :yields: row get_query_pragma "database_list", &block end
Source
# File lib/sqlite3/pragmas.rb, line 235 def default_cache_size get_int_pragma "default_cache_size" end
Source
# File lib/sqlite3/pragmas.rb, line 239 def default_cache_size=(size) set_int_pragma "default_cache_size", size end
Source
# File lib/sqlite3/pragmas.rb, line 243 def default_synchronous get_enum_pragma "default_synchronous" end
Source
# File lib/sqlite3/pragmas.rb, line 247 def default_synchronous=(mode) set_enum_pragma "default_synchronous", mode, SYNCHRONOUS_MODES end
Source
# File lib/sqlite3/pragmas.rb, line 251 def default_temp_store get_enum_pragma "default_temp_store" end
Source
# File lib/sqlite3/pragmas.rb, line 255 def default_temp_store=(mode) set_enum_pragma "default_temp_store", mode, TEMP_STORE_MODES end
Source
# File lib/sqlite3/pragmas.rb, line 259 def defer_foreign_keys get_boolean_pragma "defer_foreign_keys" end
Source
# File lib/sqlite3/pragmas.rb, line 263 def defer_foreign_keys=(mode) set_boolean_pragma "defer_foreign_keys", mode end
Source
# File lib/sqlite3/pragmas.rb, line 267 def encoding get_enum_pragma "encoding" end
Source
# File lib/sqlite3/pragmas.rb, line 271 def encoding=(mode) set_string_pragma "encoding", mode, ENCODINGS end
Source
# File lib/sqlite3/pragmas.rb, line 275 def foreign_key_check(*table, &block) # :yields: row get_query_pragma "foreign_key_check", *table, &block end
Source
# File lib/sqlite3/pragmas.rb, line 279 def foreign_key_list(table, &block) # :yields: row get_query_pragma "foreign_key_list", table, &block end
Source
# File lib/sqlite3/pragmas.rb, line 283 def foreign_keys get_boolean_pragma "foreign_keys" end
Source
# File lib/sqlite3/pragmas.rb, line 287 def foreign_keys=(mode) set_boolean_pragma "foreign_keys", mode end
Source
# File lib/sqlite3/pragmas.rb, line 291 def freelist_count get_int_pragma "freelist_count" end
Source
# File lib/sqlite3/pragmas.rb, line 295 def full_column_names get_boolean_pragma "full_column_names" end
Source
# File lib/sqlite3/pragmas.rb, line 299 def full_column_names=(mode) set_boolean_pragma "full_column_names", mode end
Source
# File lib/sqlite3/pragmas.rb, line 303 def fullfsync get_boolean_pragma "fullfsync" end
Source
# File lib/sqlite3/pragmas.rb, line 307 def fullfsync=(mode) set_boolean_pragma "fullfsync", mode end
Source
# File lib/sqlite3/pragmas.rb, line 13 def get_boolean_pragma(name) get_first_value("PRAGMA #{name}") != 0 end
Returns true
or false
depending on the value of the named pragma.
Source
# File lib/sqlite3/pragmas.rb, line 53 def get_enum_pragma(name) get_first_value("PRAGMA #{name}") end
Return the value of the given pragma.
Source
# File lib/sqlite3/pragmas.rb, line 80 def get_int_pragma(name) get_first_value("PRAGMA #{name}").to_i end
Returns the value of the given pragma as an integer.
Source
# 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
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.
Source
# File lib/sqlite3/pragmas.rb, line 311 def ignore_check_constraints=(mode) set_boolean_pragma "ignore_check_constraints", mode end
Source
# File lib/sqlite3/pragmas.rb, line 315 def incremental_vacuum(pages, &block) # :yields: row get_query_pragma "incremental_vacuum", pages, &block end
Source
# File lib/sqlite3/pragmas.rb, line 319 def index_info(index, &block) # :yields: row get_query_pragma "index_info", index, &block end
Source
# File lib/sqlite3/pragmas.rb, line 323 def index_list(table, &block) # :yields: row get_query_pragma "index_list", table, &block end
Source
# File lib/sqlite3/pragmas.rb, line 327 def index_xinfo(index, &block) # :yields: row get_query_pragma "index_xinfo", index, &block end
Source
# File lib/sqlite3/pragmas.rb, line 331 def integrity_check(*num_errors, &block) # :yields: row get_query_pragma "integrity_check", *num_errors, &block end
Source
# File lib/sqlite3/pragmas.rb, line 335 def journal_mode get_enum_pragma "journal_mode" end
Source
# File lib/sqlite3/pragmas.rb, line 339 def journal_mode=(mode) set_string_pragma "journal_mode", mode, JOURNAL_MODES end
Source
# File lib/sqlite3/pragmas.rb, line 343 def journal_size_limit get_int_pragma "journal_size_limit" end
Source
# File lib/sqlite3/pragmas.rb, line 347 def journal_size_limit=(size) set_int_pragma "journal_size_limit", size end
Source
# File lib/sqlite3/pragmas.rb, line 351 def legacy_file_format get_boolean_pragma "legacy_file_format" end
Source
# File lib/sqlite3/pragmas.rb, line 355 def legacy_file_format=(mode) set_boolean_pragma "legacy_file_format", mode end
Source
# File lib/sqlite3/pragmas.rb, line 359 def locking_mode get_enum_pragma "locking_mode" end
Source
# File lib/sqlite3/pragmas.rb, line 363 def locking_mode=(mode) set_string_pragma "locking_mode", mode, LOCKING_MODES end
Source
# File lib/sqlite3/pragmas.rb, line 367 def max_page_count get_int_pragma "max_page_count" end
Source
# File lib/sqlite3/pragmas.rb, line 371 def max_page_count=(size) set_int_pragma "max_page_count", size end
Source
# File lib/sqlite3/pragmas.rb, line 375 def mmap_size get_int_pragma "mmap_size" end
Source
# File lib/sqlite3/pragmas.rb, line 379 def mmap_size=(size) set_int_pragma "mmap_size", size end
Source
# File lib/sqlite3/pragmas.rb, line 389 def optimize(bitmask = nil) if bitmask set_int_pragma "optimize", bitmask else execute("PRAGMA optimize") end end
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.
Source
# File lib/sqlite3/pragmas.rb, line 397 def page_count get_int_pragma "page_count" end
Source
# File lib/sqlite3/pragmas.rb, line 401 def page_size get_int_pragma "page_size" end
Source
# File lib/sqlite3/pragmas.rb, line 405 def page_size=(size) set_int_pragma "page_size", size end
Source
# File lib/sqlite3/pragmas.rb, line 409 def parser_trace=(mode) set_boolean_pragma "parser_trace", mode end
Source
# File lib/sqlite3/pragmas.rb, line 413 def query_only get_boolean_pragma "query_only" end
Source
# File lib/sqlite3/pragmas.rb, line 417 def query_only=(mode) set_boolean_pragma "query_only", mode end
Source
# File lib/sqlite3/pragmas.rb, line 421 def quick_check(*num_errors, &block) # :yields: row get_query_pragma "quick_check", *num_errors, &block end
Source
# File lib/sqlite3/pragmas.rb, line 425 def read_uncommitted get_boolean_pragma "read_uncommitted" end
Source
# File lib/sqlite3/pragmas.rb, line 429 def read_uncommitted=(mode) set_boolean_pragma "read_uncommitted", mode end
Source
# File lib/sqlite3/pragmas.rb, line 433 def recursive_triggers get_boolean_pragma "recursive_triggers" end
Source
# File lib/sqlite3/pragmas.rb, line 437 def recursive_triggers=(mode) set_boolean_pragma "recursive_triggers", mode end
Source
# File lib/sqlite3/pragmas.rb, line 441 def reverse_unordered_selects get_boolean_pragma "reverse_unordered_selects" end
Source
# File lib/sqlite3/pragmas.rb, line 445 def reverse_unordered_selects=(mode) set_boolean_pragma "reverse_unordered_selects", mode end
Source
# File lib/sqlite3/pragmas.rb, line 457 def schema_version get_int_pragma "schema_version" end
Source
# File lib/sqlite3/pragmas.rb, line 461 def schema_version=(version) set_int_pragma "schema_version", version end
Source
# File lib/sqlite3/pragmas.rb, line 465 def secure_delete get_boolean_pragma "secure_delete" end
Source
# File lib/sqlite3/pragmas.rb, line 469 def secure_delete=(mode) set_boolean_pragma "secure_delete", mode end
Source
# 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
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.
Source
# 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 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.
Source
# File lib/sqlite3/pragmas.rb, line 86 def set_int_pragma(name, value) execute("PRAGMA #{name}=#{value.to_i}") end
Set the value of the given pragma to the integer value of the value
parameter.
Source
# File lib/sqlite3/pragmas.rb, line 473 def short_column_names get_boolean_pragma "short_column_names" end
Source
# File lib/sqlite3/pragmas.rb, line 477 def short_column_names=(mode) set_boolean_pragma "short_column_names", mode end
Source
# File lib/sqlite3/pragmas.rb, line 481 def shrink_memory execute("PRAGMA shrink_memory") end
Source
# File lib/sqlite3/pragmas.rb, line 485 def soft_heap_limit get_int_pragma "soft_heap_limit" end
Source
# File lib/sqlite3/pragmas.rb, line 489 def soft_heap_limit=(mode) set_int_pragma "soft_heap_limit", mode end
Source
# File lib/sqlite3/pragmas.rb, line 493 def stats(&block) # :yields: row get_query_pragma "stats", &block end
Source
# File lib/sqlite3/pragmas.rb, line 497 def synchronous get_enum_pragma "synchronous" end
Source
# File lib/sqlite3/pragmas.rb, line 501 def synchronous=(mode) set_enum_pragma "synchronous", mode, SYNCHRONOUS_MODES end
Source
# 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
Returns information about table
. Yields each row of table information if a block is provided.
Source
# File lib/sqlite3/pragmas.rb, line 505 def temp_store get_enum_pragma "temp_store" end
Source
# File lib/sqlite3/pragmas.rb, line 509 def temp_store=(mode) set_enum_pragma "temp_store", mode, TEMP_STORE_MODES end
Source
# File lib/sqlite3/pragmas.rb, line 517 def threads=(count) set_int_pragma "threads", count end
Source
# File lib/sqlite3/pragmas.rb, line 529 def user_version get_int_pragma "user_version" end
Source
# File lib/sqlite3/pragmas.rb, line 533 def user_version=(version) set_int_pragma "user_version", version end
Source
# File lib/sqlite3/pragmas.rb, line 537 def vdbe_addoptrace=(mode) set_boolean_pragma "vdbe_addoptrace", mode end
Source
# File lib/sqlite3/pragmas.rb, line 541 def vdbe_debug=(mode) set_boolean_pragma "vdbe_debug", mode end
Source
# File lib/sqlite3/pragmas.rb, line 545 def vdbe_listing=(mode) set_boolean_pragma "vdbe_listing", mode end
Source
# File lib/sqlite3/pragmas.rb, line 549 def vdbe_trace get_boolean_pragma "vdbe_trace" end
Source
# File lib/sqlite3/pragmas.rb, line 553 def vdbe_trace=(mode) set_boolean_pragma "vdbe_trace", mode end
Source
# File lib/sqlite3/pragmas.rb, line 557 def wal_autocheckpoint get_int_pragma "wal_autocheckpoint" end
Source
# File lib/sqlite3/pragmas.rb, line 561 def wal_autocheckpoint=(mode) set_int_pragma "wal_autocheckpoint", mode end
Source
# File lib/sqlite3/pragmas.rb, line 565 def wal_checkpoint get_enum_pragma "wal_checkpoint" end
Source
# File lib/sqlite3/pragmas.rb, line 569 def wal_checkpoint=(mode) set_string_pragma "wal_checkpoint", mode, WAL_CHECKPOINTS end
Source
# File lib/sqlite3/pragmas.rb, line 573 def writable_schema=(mode) set_boolean_pragma "writable_schema", mode end