Class | Sequel::SQLite::Dataset |
In: |
lib/sequel_core/adapters/sqlite.rb
|
Parent: | Sequel::Dataset |
EXPLAIN | = | 'EXPLAIN %s'.freeze |
PREPARED_ARG_PLACEHOLDER | = | ':'.freeze |
Return an array of strings specifying a query explanation for the current dataset.
# File lib/sequel_core/adapters/sqlite.rb, line 195 195: def explain 196: res = [] 197: @db.result_set(EXPLAIN % select_sql(opts), nil) {|r| res << r} 198: res 199: end
Yield a hash for each row in the dataset.
# File lib/sequel_core/adapters/sqlite.rb, line 202 202: def fetch_rows(sql) 203: execute(sql) do |result| 204: @columns = result.columns.map{|c| output_identifier(c)} 205: column_count = @columns.size 206: result.each do |values| 207: row = {} 208: column_count.times {|i| row[@columns[i]] = values[i]} 209: yield row 210: end 211: end 212: end
Use the ISO format for dates and timestamps, and quote strings using the ::SQLite3::Database.quote method.
# File lib/sequel_core/adapters/sqlite.rb, line 216 216: def literal(v) 217: case v 218: when LiteralString 219: v 220: when String 221: "'#{::SQLite3::Database.quote(v)}'" 222: when Time 223: literal(v.iso8601) 224: when Date, DateTime 225: literal(v.to_s) 226: else 227: super 228: end 229: end
Prepare the given type of query with the given name and store it in the database. Note that a new native prepared statement is created on each call to this prepared statement.
# File lib/sequel_core/adapters/sqlite.rb, line 234 234: def prepare(type, name=nil, values=nil) 235: ps = to_prepared_statement(type, values) 236: ps.extend(PreparedStatementMethods) 237: db.prepared_statements[name] = ps if name 238: ps 239: end