module Motor::Queries::PostgresqlExecQuery

Public Instance Methods

call(conn, statement) click to toggle source
# File lib/motor/queries/postgresql_exec_query.rb, line 8
def call(conn, statement)
  conn.send(:execute_and_clear, *statement) do |result|
    types = {}
    fields = result.fields

    fields.each_with_index do |fname, i|
      ftype = result.ftype i
      fmod  = result.fmod i
      types[fname] = conn.send(:get_oid_type, ftype, fmod, fname)
    end

    if conn.respond_to?(:build_result, true)
      conn.send(:build_result, columns: fields, rows: result.values, column_types: types)
    else
      ActiveRecord::Result.new(fields, result.values, types)
    end
  end
end