class Sequel::SQLite::Dataset

Constants

BindArgumentMethods
PreparedStatementMethods

Public Instance Methods

complex_expression_sql_append(sql, op, args) click to toggle source

Support regexp functions if using :setup_regexp_function Database option.

# File lib/sequel/adapters/sqlite.rb, line 380
def complex_expression_sql_append(sql, op, args)
  case op
  when :~, :'!~', :'~*', :'!~*'
    return super unless supports_regexp?

    case_insensitive = [:'~*', :'!~*'].include?(op)
    sql << 'NOT ' if [:'!~', :'!~*'].include?(op)
    sql << '('
    sql << 'LOWER(' if case_insensitive
    literal_append(sql, args[0])
    sql << ')' if case_insensitive
    sql << ' REGEXP '
    sql << 'LOWER(' if case_insensitive
    literal_append(sql, args[1])
    sql << ')' if case_insensitive
    sql << ')'
  else
    super
  end
end
fetch_rows(sql) { |row| ... } click to toggle source
# File lib/sequel/adapters/sqlite.rb, line 401
def fetch_rows(sql)
  execute(sql) do |result|
    cps = db.conversion_procs
    type_procs = result.types.map{|t| cps[base_type_name(t)]}
    j = -1
    cols = result.columns.map{|c| [output_identifier(c), type_procs[(j+=1)]]}
    self.columns = cols.map(&:first)
    max = cols.length
    result.each do |values|
      row = {}
      i = -1
      while (i += 1) < max
        name, type_proc = cols[i]
        v = values[i]
        if type_proc && v
          v = type_proc.call(v)
        end
        row[name] = v
      end
      yield row
    end
  end
end
supports_regexp?() click to toggle source

Support regexp if using :setup_regexp_function Database option.

# File lib/sequel/adapters/sqlite.rb, line 426
def supports_regexp?
  db.allow_regexp?
end

Private Instance Methods

base_type_name(t) click to toggle source

The base type name for a given type, without any parenthetical part.

# File lib/sequel/adapters/sqlite.rb, line 433
def base_type_name(t)
  (t =~ /^(.*?)\(/ ? $1 : t).downcase if t
end
bound_variable_modules() click to toggle source
# File lib/sequel/adapters/sqlite.rb, line 442
def bound_variable_modules
  [BindArgumentMethods]
end
literal_string_append(sql, v) click to toggle source

Quote the string using the adapter class method.

# File lib/sequel/adapters/sqlite.rb, line 438
def literal_string_append(sql, v)
  sql << "'" << ::SQLite3::Database.quote(v) << "'"
end
prepared_arg_placeholder() click to toggle source

SQLite uses a : before the name of the argument as a placeholder.

# File lib/sequel/adapters/sqlite.rb, line 451
def prepared_arg_placeholder
  ':'
end
prepared_statement_modules() click to toggle source
# File lib/sequel/adapters/sqlite.rb, line 446
def prepared_statement_modules
  [PreparedStatementMethods]
end