/*
* call-seq:
* conn.get_last_result( ) -> PGresult
*
* This function retrieves all available results
* on the current connection (from previously issued
* asynchronous commands like +send_query()+) and
* returns the last non-NULL result, or +nil+ if no
* results are available.
*
* This function is similar to +PGconn#get_result+
* except that it is designed to get one and only
* one result.
*/
static VALUE
pgconn_get_last_result(VALUE self)
{
PGconn *conn = get_pgconn(self);
VALUE rb_pgresult = Qnil;
PGresult *cur, *prev;
cur = prev = NULL;
while ((cur = PQgetResult(conn)) != NULL) {
int status;
if (prev) PQclear(prev);
prev = cur;
status = PQresultStatus(cur);
if (status == PGRES_COPY_OUT || status == PGRES_COPY_IN)
break;
}
if (prev) {
rb_pgresult = new_pgresult(prev, conn);
pgresult_check(self, rb_pgresult);
}
return rb_pgresult;
}