aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces')
-rw-r--r--src/interfaces/libpq/fe-exec.c74
-rw-r--r--src/interfaces/libpq/libpq-fe.h3
2 files changed, 65 insertions, 12 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 "";
}
diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h
index c5eefc182a4..fdd29fe42d2 100644
--- a/src/interfaces/libpq/libpq-fe.h
+++ b/src/interfaces/libpq/libpq-fe.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: libpq-fe.h,v 1.19 1997/05/09 03:28:54 scrappy Exp $
+ * $Id: libpq-fe.h,v 1.20 1997/08/27 09:05:24 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -225,6 +225,7 @@ extern Oid PQftype(PGresult *res, int field_num);
extern short PQfsize(PGresult *res, int field_num);
extern char* PQcmdStatus(PGresult *res);
extern const char* PQoidStatus(PGresult *res);
+extern const char* PQcmdTuples(PGresult *res);
extern char* PQgetvalue(PGresult *res, int tup_num, int field_num);
extern int PQgetlength(PGresult *res, int tup_num, int field_num);
extern int PQgetisnull(PGresult *res, int tup_num, int field_num);