module Db2Query::DbStatements

Public Instance Methods

exec_query(query, args = []) click to toggle source
# File lib/db2_query/db_statements.rb, line 41
def exec_query(query, args = [])
  sql, binds, args = query.exec_query_arguments(args)
  log(sql, binds, args) do
    pool do |client|
      stmt = client.run(sql, *args)
      columns = stmt.columns.values.map { |col| col.name.downcase }
      rows = stmt.to_a
      Db2Query::Result.new(columns, rows, query)
    ensure
      stmt.drop unless stmt.nil?
    end
  end
end
execute(sql, args = []) click to toggle source
# File lib/db2_query/db_statements.rb, line 28
def execute(sql, args = [])
  pool do |client|
    client.do(sql, *args)
  end
end
query(sql) click to toggle source
# File lib/db2_query/db_statements.rb, line 5
def query(sql)
  pool do |client|
    stmt = client.run(sql)
    stmt.to_a
  ensure
    stmt.drop unless stmt.nil?
  end
end
query_rows(sql) click to toggle source
# File lib/db2_query/db_statements.rb, line 14
def query_rows(sql)
  query(sql)
end
query_value(sql) click to toggle source
# File lib/db2_query/db_statements.rb, line 18
def query_value(sql)
  rows = query(sql)
  row = rows.first
  row && row.first
end
query_values(sql) click to toggle source
# File lib/db2_query/db_statements.rb, line 24
def query_values(sql)
  query(sql).map(&:first)
end
raw_query(sql, args = []) click to toggle source
# File lib/db2_query/db_statements.rb, line 34
def raw_query(sql, args = [])
  pool do |client|
    stmt = client.run(sql, *args)
    raw_result(stmt)
  end
end
reset_id_sequence!(table_name) click to toggle source
# File lib/db2_query/db_statements.rb, line 55
    def reset_id_sequence!(table_name)
      next_val = max_id(table_name) + 1
      execute <<-SQL
        ALTER TABLE #{table_name}
        ALTER COLUMN ID
        RESTART WITH #{next_val}
        SET INCREMENT BY 1
        SET NO CYCLE
        SET CACHE 500
        SET NO ORDER;
      SQL
    end

Private Instance Methods

max_id(table_name) click to toggle source
# File lib/db2_query/db_statements.rb, line 69
def max_id(table_name)
  query_value("SELECT COALESCE(MAX (ID),0) FROM #{table_name}")
end
raw_result(stmt) click to toggle source
# File lib/db2_query/db_statements.rb, line 73
def raw_result(stmt)
  columns = stmt.columns.values.map { |col| col.name.downcase }
  stmt.to_a.map do |row|
    index, hash = [0, {}]
    while index < columns.length
      hash[columns[index].to_sym] = row[index]
      index += 1
    end
    hash
  end
ensure
  stmt.drop unless stmt.nil?
end