From 3751b49545d71881b93035ef8cdd1c4034f08a59 Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Wed, 27 Aug 1997 09:05:24 +0000 Subject: Number of tuples inserted/affected by INSERT/UPDATE/DELETE... --- src/interfaces/libpq/fe-exec.c | 74 +++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 11 deletions(-) (limited to 'src/interfaces/libpq/fe-exec.c') diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index 9214b3a941a..97543a05d15 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.33 1997/07/12 20:31:47 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.34 1997/08/27 09:05:23 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -1532,18 +1532,70 @@ char* PQcmdStatus(PGresult *res) { if the last command was an INSERT, return the oid string if not, return "" */ -const char* PQoidStatus(PGresult *res) { - if (!res) { - fprintf(stderr, "PQoidStatus() -- pointer to PQresult is null"); - return NULL; - } +static char oidStatus[32] = {0}; +const char* PQoidStatus (PGresult *res) +{ + if (!res) + { + fprintf (stderr, "PQoidStatus () -- pointer to PQresult is null"); + return NULL; + } - if (!res->cmdStatus) - return ""; + oidStatus[0] = 0; + if ( !res->cmdStatus ) + return oidStatus; + + if ( strncmp (res->cmdStatus, "INSERT", 6) == 0 ) + { + char *p = res->cmdStatus + 7; + char *e; + + for (e = p; *e != ' ' && *e; ) e++; + sprintf (oidStatus, "%.*s", e - p, p); + } + return oidStatus; +} - if (strncmp(res->cmdStatus, "INSERT",6) == 0) { - return res->cmdStatus+7; - } else +/* + PQcmdTuples - + if the last command was an INSERT/UPDATE/DELETE, return number + of inserted/affected tuples, if not, return "" +*/ +const char* PQcmdTuples (PGresult *res) +{ + if (!res) + { + fprintf (stderr, "PQcmdTuples () -- pointer to PQresult is null"); + return NULL; + } + + if ( !res->cmdStatus ) + return ""; + + if ( strncmp (res->cmdStatus, "INSERT", 6) == 0 || + strncmp (res->cmdStatus, "DELETE", 6) == 0 || + strncmp (res->cmdStatus, "UPDATE", 6) == 0 ) + { + char *p = res->cmdStatus + 6; + + if ( *p == 0 ) + { + fprintf (stderr, "PQcmdTuples (%s) -- short input from server", + res->cmdStatus); + return NULL; + } + p++; + if ( *(res->cmdStatus) != 'I' ) /* UPDATE/DELETE */ + return (p); + while ( *p != ' ' && *p ) p++; /* INSERT: skip oid */ + if ( *p == 0 ) + { + fprintf (stderr, "PQcmdTuples (INSERT) -- there's no # of tuples"); + return NULL; + } + p++; + return (p); + } return ""; } -- cgit v1.2.3