| Class | ActiveRecord::ConnectionAdapters::SQLiteAdapter |
| In: |
vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
|
| Parent: | AbstractAdapter |
The SQLite adapter works with both the 2.x and 3.x series of SQLite with the sqlite-ruby drivers (available both as gems and from rubyforge.org/projects/sqlite-ruby/).
Options:
| remove_column | -> | remove_columns |
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 242
242: def change_column_null(table_name, column_name, null, default = nil)
243: unless null || default.nil?
244: execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL")
245: end
246: alter_table(table_name) do |definition|
247: definition[column_name].null = null
248: end
249: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 87
87: def disconnect!
88: super
89: @connection.close rescue nil
90: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 270
270: def empty_insert_statement(table_name)
271: "INSERT INTO #{table_name} VALUES(NULL)"
272: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 213
213: def rename_table(name, new_name)
214: execute "ALTER TABLE #{name} RENAME TO #{new_name}"
215: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 83
83: def requires_reloading?
84: true
85: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 149
149: def select_rows(sql, name = nil)
150: execute(sql, name).map do |row|
151: (0...(row.size / 2)).map { |i| row[i] }
152: end
153: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 372
372: def catch_schema_changes
373: return yield
374: rescue ActiveRecord::StatementInvalid => exception
375: if exception.message =~ /database schema has changed/
376: reconnect!
377: retry
378: else
379: raise
380: end
381: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 387
387: def default_primary_key_type
388: if supports_autoincrement?
389: 'INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL'.freeze
390: else
391: 'INTEGER PRIMARY KEY NOT NULL'.freeze
392: end
393: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 383
383: def sqlite_version
384: @sqlite_version ||= select_value('select sqlite_version(*)')
385: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 287
287: def table_structure(table_name)
288: returning structure = execute("PRAGMA table_info(#{quote_table_name(table_name)})") do
289: raise(ActiveRecord::StatementInvalid, "Could not find table '#{table_name}'") if structure.empty?
290: end
291: end