/* * call-seq: * conn.get_result() -> PGresult * * Blocks waiting for the next result from a call to * +PGconn#send_query+ (or another asynchronous command), and returns * it. Returns +nil+ if no more results are available. * * Note: call this function repeatedly until it returns +nil+, or else * you will not be able to issue further commands. */ static VALUE pgconn_get_result(VALUE self) { PGconn *conn = get_pgconn(self); PGresult *result; VALUE rb_pgresult; result = PQgetResult(conn); if(result == NULL) return Qnil; rb_pgresult = new_pgresult(result); if (rb_block_given_p()) { return rb_ensure(yield_pgresult, rb_pgresult, pgresult_clear, rb_pgresult); } return rb_pgresult; }