# File lib/arjdbc/sqlite3/adapter.rb, line 89 def self.arel2_visitors(config) { 'sqlite3' => ::Arel::Visitors::SQLite, 'jdbcsqlite3' => ::Arel::Visitors::SQLite } end
# File lib/arjdbc/sqlite3/adapter.rb, line 324 def change_column_null(table_name, column_name, null, default = nil) unless null || default.nil? execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL") end alter_table(table_name) do |definition| definition[column_name].null = null end end
# File lib/arjdbc/sqlite3/adapter.rb, line 227 def create_savepoint execute("SAVEPOINT #{current_savepoint_name}") end
# File lib/arjdbc/sqlite3/adapter.rb, line 129 def default_primary_key_type if supports_autoincrement? 'integer PRIMARY KEY AUTOINCREMENT NOT NULL' else 'integer PRIMARY KEY NOT NULL' end end
# File lib/arjdbc/sqlite3/adapter.rb, line 359 def empty_insert_statement_value "VALUES(NULL)" end
# File lib/arjdbc/sqlite3/adapter.rb, line 213 def indexes(table_name, name = nil) result = select_rows("SELECT name, sql FROM sqlite_master" << " WHERE tbl_name = #{quote_table_name(table_name)} AND type = 'index'", name) result.map do |row| name, index_sql = row[0], row[1] unique = !! (index_sql =~ /unique/) columns = index_sql.match(/\((.*)\)/)[1].gsub(/,/,' ').split.map do |col| match = /^"(.+)"$/.match(col); match ? match[1] : col end IndexDefinition.new(table_name, name, unique, columns) end end
# File lib/arjdbc/sqlite3/adapter.rb, line 123 def modify_types(types) super(types) types.merge! NATIVE_DATABASE_TYPES types end
# File lib/arjdbc/sqlite3/adapter.rb, line 117 def native_database_types types = super.merge(NATIVE_DATABASE_TYPES) types[:primary_key] = default_primary_key_type types end
# File lib/arjdbc/sqlite3/adapter.rb, line 166 def quote(value, column = nil) if value.kind_of?(String) column_type = column && column.type if column_type == :binary && column.class.respond_to?(:string_to_binary) "x'#{column.class.string_to_binary(value).unpack("H*")[0]}'" else super end else super end end
# File lib/arjdbc/sqlite3/adapter.rb, line 239 def recreate_database(name, options = {}) tables.each { |table| drop_table(table) } end
# File lib/arjdbc/sqlite3/adapter.rb, line 235 def release_savepoint execute("RELEASE SAVEPOINT #{current_savepoint_name}") end
# File lib/arjdbc/sqlite3/adapter.rb, line 283 def rename_table(name, new_name) execute "ALTER TABLE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}" end
# File lib/arjdbc/sqlite3/adapter.rb, line 231 def rollback_to_savepoint execute("ROLLBACK TO SAVEPOINT #{current_savepoint_name}") end
# File lib/arjdbc/sqlite3/adapter.rb, line 243 def select(sql, name = nil, binds = []) execute(sql, name, binds).map do |row| record = {} row.each_key do |key| if key.is_a?(String) record[key.sub(/^"?\w+"?\./, '')] = row[key] end end record end end
# File lib/arjdbc/sqlite3/adapter.rb, line 207 def table_exists?(table_name) table_name && tables(nil, table_name).any? end
# File lib/arjdbc/sqlite3/adapter.rb, line 255 def table_structure(table_name) sql = "PRAGMA table_info(#{quote_table_name(table_name)})" log(sql, 'SCHEMA') { @connection.execute_query(sql) } rescue ActiveRecord::JDBCError => error e = ActiveRecord::StatementInvalid.new("Could not find table '#{table_name}'") e.set_backtrace error.backtrace raise e end
See: www.sqlite.org/lang_altertable.html SQLite has an additional restriction on the ALTER TABLE statement
# File lib/arjdbc/sqlite3/adapter.rb, line 289 def valid_alter_table_options( type, options) type.to_sym != :primary_key end
# File lib/arjdbc/sqlite3/adapter.rb, line 376 def last_insert_id @connection.last_insert_row_id end
Generated with the Darkfish Rdoc Generator 2.