/* * 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(self) 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); pgresult_check(self, rb_pgresult); if (rb_block_given_p()) { return rb_ensure(yield_pgresult, rb_pgresult, pgresult_clear, rb_pgresult); } return rb_pgresult; }