aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/libpq/fe-exec.c
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-08-27 09:05:24 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-08-27 09:05:24 +0000
commit3751b49545d71881b93035ef8cdd1c4034f08a59 (patch)
tree6021423b94d39d1969c34225df10e5c97840d69d /src/interfaces/libpq/fe-exec.c
parent40ac5a692bedde826da70158cb1194e6774b8888 (diff)
downloadpostgresql-3751b49545d71881b93035ef8cdd1c4034f08a59.tar.gz
postgresql-3751b49545d71881b93035ef8cdd1c4034f08a59.zip
Number of tuples inserted/affected by INSERT/UPDATE/DELETE...
Diffstat (limited to 'src/interfaces/libpq/fe-exec.c')
-rw-r--r--src/interfaces/libpq/fe-exec.c74
1 files changed, 63 insertions, 11 deletions
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 "";
}