/*
 * call-seq:
 *    res.result()
 *
 * Returns an array of tuples (rows, which are themselves arrays) that represent the query result.
 */
static VALUE
pgresult_result(obj)
    VALUE obj;
{
    PGresult *result;
    VALUE ary;
    int nt, nf, i, j;

    result = get_pgresult(obj);
    nt = PQntuples(result);
    nf = PQnfields(result);
    ary = rb_ary_new2(nt);
    for (i=0; i<nt; i++) {
        VALUE row = rb_ary_new2(nf);
        for (j=0; j<nf; j++) {
            VALUE value = fetch_pgresult(result, i, j);
            rb_ary_push(row, value);
        }
        rb_ary_push(ary, row);
    };

    return ary;
}