aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1996-07-31 18:40:12 +0000
committerMarc G. Fournier <scrappy@hub.org>1996-07-31 18:40:12 +0000
commit4e82924eac3792629812fdaed81aceeedbd160af (patch)
tree76a8794eb72ed1598cae08bd91ad72c3777854f0
parent7d2000e3a759bb5486eb4d80fb368a0c4b5c814f (diff)
downloadpostgresql-4e82924eac3792629812fdaed81aceeedbd160af.tar.gz
postgresql-4e82924eac3792629812fdaed81aceeedbd160af.zip
Row count patch from Bruce
-rw-r--r--src/interfaces/libpq/fe-exec.c58
-rw-r--r--src/interfaces/libpq/libpq-fe.h6
2 files changed, 38 insertions, 26 deletions
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index ad4b20956a2..14675d4f92b 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.11 1996/07/31 06:05:46 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.12 1996/07/31 18:40:09 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -829,21 +829,22 @@ PQprint(FILE *fout,
nFields = PQnfields(res);
if ( nFields > 0 ) { /* only print tuples with at least 1 field. */
- int i,j;
- int nTups;
- int *fieldMax=NULL; /* keep -Wall happy */
- unsigned char *fieldNotNum=NULL; /* keep -Wall happy */
- char **fields=NULL; /*keep -Wall happy */
+ int i,j;
+ int nTups;
+ int *fieldMax=NULL; /* in case we don't use them */
+ unsigned char *fieldNotNum=NULL;
+ char *border=NULL;
+ char **fields=NULL;
char **fieldNames;
int fieldMaxLen=0;
- char *border=NULL;
- int numFieldName;
+ int numFieldName;
int fs_len=strlen(po->fieldSep);
- int total_line_length = 0;
- int usePipe = 0;
- char *pagerenv;
+ int total_line_length = 0;
+ int usePipe = 0;
+ char *pagerenv;
+ char buf[8192*2+1];
- nTups = PQntuples(res);
+ nTups = PQntuples(res);
if (!(fieldNames=(char **)calloc(nFields, sizeof (char *))))
{
perror("calloc");
@@ -882,7 +883,10 @@ PQprint(FILE *fout,
if (fout == NULL)
fout = stdout;
- if (po->pager && fout == stdout && isatty(fileno(stdout))) {
+ if (po->pager && fout == stdout &&
+ isatty(fileno(stdin)) &&
+ isatty(fileno(stdout)))
+ {
/* try to pipe to the pager program if possible */
#ifdef TIOCGWINSZ
if (ioctl(fileno(stdout),TIOCGWINSZ,&screen_size) == -1 ||
@@ -907,8 +911,7 @@ PQprint(FILE *fout,
screen_size.ws_row -
(po->header != 0) *
(total_line_length / screen_size.ws_col + 1) * 2
- /*- 1 */ /* newline at end of tuple list */
- /*- (quiet == 0)*/
+ - (po->header != 0) *2 /* row count and newline */
)))
{
fout = popen(pagerenv, "w");
@@ -927,7 +930,8 @@ PQprint(FILE *fout,
perror("calloc");
exit(1);
}
- } else
+ }
+ else
if (po->header && !po->html3)
{
if (po->expanded)
@@ -936,7 +940,8 @@ PQprint(FILE *fout,
fprintf(fout, "%-*s%s Value\n", fieldMaxLen-fs_len, "Field", po->fieldSep);
else
fprintf(fout, "%s%sValue\n", "Field", po->fieldSep);
- } else
+ }
+ else
{
int len=0;
for (j=0; j < nFields; j++)
@@ -959,8 +964,8 @@ PQprint(FILE *fout,
else
fprintf(fout, "<centre><h2>Query retrieved %d tuples * %d fields</h2></centre>\n", nTups, nFields);
}
- for (i = 0; i < nTups; i++) {
- char buf[8192*2+1];
+ for (i = 0; i < nTups; i++)
+ {
if (po->expanded)
{
if (po->html3)
@@ -968,7 +973,8 @@ PQprint(FILE *fout,
else
fprintf(fout, "-- RECORD %d --\n", i);
}
- for (j = 0; j < nFields; j++) {
+ for (j = 0; j < nFields; j++)
+ {
char *pval, *p, *o;
int plen;
if ((plen=PQgetlength(res,i,j))<1 || !(pval=PQgetvalue(res,i,j)) || !*pval)
@@ -996,7 +1002,8 @@ PQprint(FILE *fout,
exit(1);
}
strcpy(fields[i*nFields+j], buf);
- } else
+ }
+ else
{
if (po->expanded)
{
@@ -1089,7 +1096,8 @@ efield:
{
fprintf(fout, "<th align=%s>%s</th>", fieldNotNum[j]? "left": "right",
fieldNames[j]);
- } else
+ }
+ else
{
int n=strlen(s);
if (n>fieldMax[j])
@@ -1139,10 +1147,14 @@ efield:
}
free(fields);
}
+ if (po->header && !po->html3)
+ fprintf (fout, "(%d row%s)\n\n",PQntuples(res),
+ (PQntuples(res) == 1) ? "" : "s");
free(fieldMax);
free(fieldNotNum);
free(fieldNames);
- if (usePipe) {
+ if (usePipe)
+ {
pclose(fout);
signal(SIGPIPE, SIG_DFL);
}
diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h
index 483dcccff9e..072039558c7 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.4 1996/07/27 02:55:23 scrappy Exp $
+ * $Id: libpq-fe.h,v 1.5 1996/07/31 18:40:12 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -128,12 +128,12 @@ typedef struct pg_result{
} PGresult;
struct _PQprintOpt {
- bool header; /* print output field headers or not */
+ bool header; /* print output field headings and row count */
bool align; /* fill align the fields */
bool standard; /* old brain dead format */
bool html3; /* output html tables */
bool expanded; /* expand tables */
- bool pager; /* use pager for output if needed */
+ bool pager; /* use pager for output if needed */
char *fieldSep; /* field separator */
char *tableOpt; /* insert to HTML <table ...> */
char *caption; /* HTML <caption> */