/*
 * call-seq:
 *    res.fields() -> Array
 *
 * Returns an array of Strings representing the names of the fields in the result.
 */
static VALUE
pgresult_fields(VALUE self)
{
        PGresult *result;
        VALUE ary;
        int n, i;

        result = get_pgresult(self);
        n = PQnfields(result);
        ary = rb_ary_new2(n);
        for (i=0;i<n;i++) {
                VALUE val = rb_tainted_str_new2(PQfname(result, i));
                ASSOCIATE_INDEX(val, self);
                rb_ary_push(ary, val);
        }
        return ary;
}