Postgres

 view release on metacpan or  search on metacpan

Postgres.xs  view on Meta::CPAN

    CODE:
	RETVAL=PQfsize(q->res,field);
    OUTPUT:
	RETVAL

char *
query_getvalue(q,tuple,field)
	QUERY *q;
	int tuple;
	int field;
    PROTOTYPE: $$$
    CODE:
	RETVAL=PQgetvalue(q->res,tuple,field);
    OUTPUT:
	RETVAL

int
query_getlength(q,tuple,field)
	QUERY *q;
	int tuple;
	int field;
    PROTOTYPE: $$$
    CODE:
	RETVAL=PQgetlength(q->res,tuple,field);
    OUTPUT:
	RETVAL

int
query_getisnull(q,tuple,field)
	QUERY *q;
	int tuple;
	int field;
    PROTOTYPE: $$$
    CODE:
	RETVAL=PQgetisnull(q->res,tuple,field);
    OUTPUT:
	RETVAL

char *
query_cmdStatus(q)
	QUERY *q;
    PROTOTYPE: $
    CODE:
	RETVAL=PQcmdStatus(q->res);
    OUTPUT:
	RETVAL

char *
query_oidStatus(q)
	QUERY *q;
    PROTOTYPE: $
    CODE:
	RETVAL=PQoidStatus(q->res);
    OUTPUT:
	RETVAL

void
query_fetchrow(q)
	QUERY *q;
    PROTOTYPE: $
    PPCODE:
    if (q && q->res) {
      int cols = PQnfields(q->res);
      /* return empty list when no more data */
      if (PQntuples(q->res) > q->cur_row) { /* out of tuples to return */
	int cur_col = 0;
	EXTEND(sp,cols);
	while(cur_col < cols) {
	  if (PQgetisnull(q->res,q->cur_row,cur_col))
	    PUSHs(&sv_undef);
	  else {
	    char *val = PQgetvalue(q->res,q->cur_row,cur_col);
	    PUSHs(sv_2mortal((SV*)newSVpv(val,0)));
	  }
	  ++cur_col;
	} /* while */
	++q->cur_row;		/* go to next row */
      } /* tuples to return */
      /* else just drop through and return empty list */
    } /* if q */



( run in 2.593 seconds using v1.01-cache-2.11-cpan-5511b514fd6 )