Module: Sequel::SQLite::DatabaseMethods
- Included in:
- Amalgalite::Database, DataObjects::SQLite::DatabaseMethods, JDBC::SQLite::DatabaseMethods, Database
- Defined in:
- lib/sequel/adapters/shared/sqlite.rb
Constant Summary collapse
- AUTO_VACUUM =
[:none, :full, :incremental].freeze
- PRIMARY_KEY_INDEX_RE =
/\Asqlite_autoindex_/.freeze
- SYNCHRONOUS =
[:off, :normal, :full].freeze
- TABLES_FILTER =
"type = 'table' AND NOT name = 'sqlite_sequence'"
- TEMP_STORE =
[:default, :file, :memory].freeze
Instance Method Summary collapse
-
#alter_table(name, generator = nil, &block) ⇒ Object
Run all alter_table commands in a transaction.
-
#auto_vacuum ⇒ Object
A symbol signifying the value of the auto_vacuum PRAGMA.
-
#auto_vacuum=(value) ⇒ Object
Set the auto_vacuum PRAGMA using the given symbol (:none, :full, or :incremental).
-
#database_type ⇒ Object
SQLite uses the :sqlite database type.
-
#indexes(table) ⇒ Object
Return a hash containing index information.
-
#pragma_get(name) ⇒ Object
Get the value of the given PRAGMA.
-
#pragma_set(name, value) ⇒ Object
Set the value of the given PRAGMA to value.
-
#supports_savepoints? ⇒ Boolean
SQLite supports savepoints.
-
#synchronous ⇒ Object
A symbol signifying the value of the synchronous PRAGMA.
-
#synchronous=(value) ⇒ Object
Set the synchronous PRAGMA using the given symbol (:off, :normal, or :full).
-
#tables(opts = {}) ⇒ Object
Array of symbols specifying the table names in the current database.
-
#temp_store ⇒ Object
A symbol signifying the value of the temp_store PRAGMA.
-
#temp_store=(value) ⇒ Object
Set the temp_store PRAGMA using the given symbol (:default, :file, or :memory).
Instance Method Details
#alter_table(name, generator = nil, &block) ⇒ Object
Run all alter_table commands in a transaction. This is technically only needed for drop column.
12 13 14 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 12 def alter_table(name, generator=nil, &block) transaction{super} end |
#auto_vacuum ⇒ Object
A symbol signifying the value of the auto_vacuum PRAGMA.
17 18 19 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 17 def auto_vacuum AUTO_VACUUM[pragma_get(:auto_vacuum).to_i] end |
#auto_vacuum=(value) ⇒ Object
Set the auto_vacuum PRAGMA using the given symbol (:none, :full, or :incremental).
23 24 25 26 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 23 def auto_vacuum=(value) value = AUTO_VACUUM.index(value) || (raise Error, "Invalid value for auto_vacuum option. Please specify one of :none, :full, :incremental.") pragma_set(:auto_vacuum, value) end |
#database_type ⇒ Object
SQLite uses the :sqlite database type.
29 30 31 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 29 def database_type :sqlite end |
#indexes(table) ⇒ Object
Return a hash containing index information. Hash keys are index name symbols. Values are subhashes with two keys, :columns and :unique. The value of :columns is an array of symbols of column names. The value of :unique is true or false depending on if the index is unique.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 37 def indexes(table) m = output_identifier_meth im = input_identifier_meth indexes = {} begin .with_sql("PRAGMA index_list(?)", im.call(table)).each do |r| next if r[:name] =~ PRIMARY_KEY_INDEX_RE indexes[m.call(r[:name])] = {:unique=>r[:unique].to_i==1} end rescue Sequel::DatabaseError nil else indexes.each do |k, v| v[:columns] = .with_sql("PRAGMA index_info(?)", im.call(k)).map(:name).map{|x| m.call(x)} end end indexes end |
#pragma_get(name) ⇒ Object
Get the value of the given PRAGMA.
57 58 59 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 57 def pragma_get(name) self["PRAGMA #{name}"].single_value end |
#pragma_set(name, value) ⇒ Object
Set the value of the given PRAGMA to value.
62 63 64 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 62 def pragma_set(name, value) execute_ddl("PRAGMA #{name} = #{value}") end |
#supports_savepoints? ⇒ Boolean
SQLite supports savepoints
67 68 69 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 67 def supports_savepoints? true end |
#synchronous ⇒ Object
A symbol signifying the value of the synchronous PRAGMA.
72 73 74 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 72 def synchronous SYNCHRONOUS[pragma_get(:synchronous).to_i] end |
#synchronous=(value) ⇒ Object
Set the synchronous PRAGMA using the given symbol (:off, :normal, or :full).
77 78 79 80 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 77 def synchronous=(value) value = SYNCHRONOUS.index(value) || (raise Error, "Invalid value for synchronous option. Please specify one of :off, :normal, :full.") pragma_set(:synchronous, value) end |
#tables(opts = {}) ⇒ Object
Array of symbols specifying the table names in the current database.
Options:
-
:server - Set the server to use.
86 87 88 89 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 86 def tables(opts={}) m = output_identifier_meth .from(:sqlite_master).server(opts[:server]).filter(TABLES_FILTER).map{|r| m.call(r[:name])} end |
#temp_store ⇒ Object
A symbol signifying the value of the temp_store PRAGMA.
92 93 94 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 92 def temp_store TEMP_STORE[pragma_get(:temp_store).to_i] end |
#temp_store=(value) ⇒ Object
Set the temp_store PRAGMA using the given symbol (:default, :file, or :memory).
97 98 99 100 |
# File 'lib/sequel/adapters/shared/sqlite.rb', line 97 def temp_store=(value) value = TEMP_STORE.index(value) || (raise Error, "Invalid value for temp_store option. Please specify one of :default, :file, :memory.") pragma_set(:temp_store, value) end |