*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/ordering.c,v 1.7 1998/09/01 03:23:54 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/Attic/ordering.c,v 1.8 1998/09/21 02:25:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
if (path_ordering1->ordtype == MERGE_ORDER &&
path_ordering2->ordtype == MERGE_ORDER)
{
-
return equal(path_ordering1->ord.merge, path_ordering2->ord.merge);
-
}
else if (path_ordering1->ordtype == SORTOP_ORDER &&
path_ordering2->ordtype == SORTOP_ORDER)
{
-
return
(equal_sortops_order(path_ordering1->ord.sortop,
path_ordering2->ord.sortop));
else if (path_ordering1->ordtype == MERGE_ORDER &&
path_ordering2->ordtype == SORTOP_ORDER)
{
-
return (path_ordering2->ord.sortop &&
(path_ordering1->ord.merge->left_operator ==
path_ordering2->ord.sortop[0]));
}
else
{
-
return (path_ordering1->ord.sortop &&
(path_ordering1->ord.sortop[0] ==
path_ordering2->ord.merge->left_operator));
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.160 1998/09/03 05:08:25 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.161 1998/09/21 02:25:23 momjian Exp $
*
*-------------------------------------------------------------------------
*/
static int tableDesc(PsqlSettings *pset, char *table, FILE *fout);
static int objectDescription(PsqlSettings *pset, char *object);
static int rightsList(PsqlSettings *pset);
+static void emitNtimes (FILE *fout, const char *str, int N);
static void prompt_for_password(char *username, char *password);
static char *gets_noreadline(char *prompt, FILE *source);
/* if you add/remove a line here, change the row test above */
fprintf(fout, " \\? -- help\n");
- fprintf(fout, " \\a -- toggle field-alignment (currenty %s)\n", on(pset->opt.align));
+ fprintf(fout, " \\a -- toggle field-alignment (currently %s)\n", on(pset->opt.align));
fprintf(fout, " \\C [<captn>] -- set html3 caption (currently '%s')\n", pset->opt.caption ? pset->opt.caption : "");
fprintf(fout, " \\connect <dbname|-> <user> -- connect to new database (currently '%s')\n", PQdb(pset->db));
fprintf(fout, " \\copy table {from | to} <fname>\n");
char listbuf[512];
int nColumns;
int i;
+ int maxCol1Len;
+ int maxCol2Len;
int usePipe = 0;
char *pagerenv;
FILE *fout;
else
fout = stdout;
+ /* choose column widths */
+ maxCol1Len = strlen("Relation");
+ maxCol2Len = strlen("Grant/Revoke Permissions");
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ int l = strlen(PQgetvalue(res, i, 0));
+ if (l > maxCol1Len)
+ maxCol1Len = l;
+ l = strlen(PQgetvalue(res, i, 1));
+ if (l > maxCol2Len)
+ maxCol2Len = l;
+ }
+
/* Display the information */
fprintf(fout, "\nDatabase = %s\n", PQdb(pset->db));
- fprintf(fout, " +------------------+----------------------------------------------------+\n");
- fprintf(fout, " | Relation | Grant/Revoke Permissions |\n");
- fprintf(fout, " +------------------+----------------------------------------------------+\n");
+ fprintf(fout, " +");
+ emitNtimes(fout, "-", maxCol1Len+2);
+ fprintf(fout, "+");
+ emitNtimes(fout, "-", maxCol2Len+2);
+ fprintf(fout, "+\n");
+ fprintf(fout, " | %-*s | %-*s |\n",
+ maxCol1Len, "Relation",
+ maxCol2Len, "Grant/Revoke Permissions");
+ fprintf(fout, " +");
+ emitNtimes(fout, "-", maxCol1Len+2);
+ fprintf(fout, "+");
+ emitNtimes(fout, "-", maxCol2Len+2);
+ fprintf(fout, "+\n");
/* next, print out the instances */
for (i = 0; i < PQntuples(res); i++)
{
- fprintf(fout, " | %-16.16s", PQgetvalue(res, i, 0));
- fprintf(fout, " | %-50.50s | ", PQgetvalue(res, i, 1));
- fprintf(fout, "\n");
+ fprintf(fout, " | %-*s | %-*s |\n",
+ maxCol1Len, PQgetvalue(res, i, 0),
+ maxCol2Len, PQgetvalue(res, i, 1));
}
- fprintf(fout, " +------------------+----------------------------------------------------+\n");
+
+ fprintf(fout, " +");
+ emitNtimes(fout, "-", maxCol1Len+2);
+ fprintf(fout, "+");
+ emitNtimes(fout, "-", maxCol2Len+2);
+ fprintf(fout, "+\n");
+
PQclear(res);
if (usePipe)
{
}
}
+static void emitNtimes (FILE *fout, const char *str, int N)
+{
+ int i;
+ for (i = 0; i < N; i++) {
+ fputs(str, fout);
+ }
+}
+
/*
* Describe a table
*