Fix for \z formatting from Tom Lane.
This commit is contained in:
parent
4b048fbfaa
commit
25a64f7519
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -38,14 +38,11 @@ equal_path_path_ordering(PathOrder *path_ordering1,
|
||||||
if (path_ordering1->ordtype == MERGE_ORDER &&
|
if (path_ordering1->ordtype == MERGE_ORDER &&
|
||||||
path_ordering2->ordtype == MERGE_ORDER)
|
path_ordering2->ordtype == MERGE_ORDER)
|
||||||
{
|
{
|
||||||
|
|
||||||
return equal(path_ordering1->ord.merge, path_ordering2->ord.merge);
|
return equal(path_ordering1->ord.merge, path_ordering2->ord.merge);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (path_ordering1->ordtype == SORTOP_ORDER &&
|
else if (path_ordering1->ordtype == SORTOP_ORDER &&
|
||||||
path_ordering2->ordtype == SORTOP_ORDER)
|
path_ordering2->ordtype == SORTOP_ORDER)
|
||||||
{
|
{
|
||||||
|
|
||||||
return
|
return
|
||||||
(equal_sortops_order(path_ordering1->ord.sortop,
|
(equal_sortops_order(path_ordering1->ord.sortop,
|
||||||
path_ordering2->ord.sortop));
|
path_ordering2->ord.sortop));
|
||||||
|
@ -53,14 +50,12 @@ equal_path_path_ordering(PathOrder *path_ordering1,
|
||||||
else if (path_ordering1->ordtype == MERGE_ORDER &&
|
else if (path_ordering1->ordtype == MERGE_ORDER &&
|
||||||
path_ordering2->ordtype == SORTOP_ORDER)
|
path_ordering2->ordtype == SORTOP_ORDER)
|
||||||
{
|
{
|
||||||
|
|
||||||
return (path_ordering2->ord.sortop &&
|
return (path_ordering2->ord.sortop &&
|
||||||
(path_ordering1->ord.merge->left_operator ==
|
(path_ordering1->ord.merge->left_operator ==
|
||||||
path_ordering2->ord.sortop[0]));
|
path_ordering2->ord.sortop[0]));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
return (path_ordering1->ord.sortop &&
|
return (path_ordering1->ord.sortop &&
|
||||||
(path_ordering1->ord.sortop[0] ==
|
(path_ordering1->ord.sortop[0] ==
|
||||||
path_ordering2->ord.merge->left_operator));
|
path_ordering2->ord.merge->left_operator));
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -156,6 +156,7 @@ static int tableList(PsqlSettings *pset, bool deep_tablelist,
|
||||||
static int tableDesc(PsqlSettings *pset, char *table, FILE *fout);
|
static int tableDesc(PsqlSettings *pset, char *table, FILE *fout);
|
||||||
static int objectDescription(PsqlSettings *pset, char *object);
|
static int objectDescription(PsqlSettings *pset, char *object);
|
||||||
static int rightsList(PsqlSettings *pset);
|
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 void prompt_for_password(char *username, char *password);
|
||||||
|
|
||||||
static char *gets_noreadline(char *prompt, FILE *source);
|
static char *gets_noreadline(char *prompt, FILE *source);
|
||||||
|
@ -244,7 +245,7 @@ slashUsage(PsqlSettings *pset)
|
||||||
|
|
||||||
/* if you add/remove a line here, change the row test above */
|
/* if you add/remove a line here, change the row test above */
|
||||||
fprintf(fout, " \\? -- help\n");
|
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, " \\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, " \\connect <dbname|-> <user> -- connect to new database (currently '%s')\n", PQdb(pset->db));
|
||||||
fprintf(fout, " \\copy table {from | to} <fname>\n");
|
fprintf(fout, " \\copy table {from | to} <fname>\n");
|
||||||
|
@ -540,6 +541,8 @@ rightsList(PsqlSettings *pset)
|
||||||
char listbuf[512];
|
char listbuf[512];
|
||||||
int nColumns;
|
int nColumns;
|
||||||
int i;
|
int i;
|
||||||
|
int maxCol1Len;
|
||||||
|
int maxCol2Len;
|
||||||
int usePipe = 0;
|
int usePipe = 0;
|
||||||
char *pagerenv;
|
char *pagerenv;
|
||||||
FILE *fout;
|
FILE *fout;
|
||||||
|
@ -583,21 +586,50 @@ rightsList(PsqlSettings *pset)
|
||||||
else
|
else
|
||||||
fout = stdout;
|
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 */
|
/* Display the information */
|
||||||
|
|
||||||
fprintf(fout, "\nDatabase = %s\n", PQdb(pset->db));
|
fprintf(fout, "\nDatabase = %s\n", PQdb(pset->db));
|
||||||
fprintf(fout, " +------------------+----------------------------------------------------+\n");
|
fprintf(fout, " +");
|
||||||
fprintf(fout, " | Relation | Grant/Revoke Permissions |\n");
|
emitNtimes(fout, "-", maxCol1Len+2);
|
||||||
fprintf(fout, " +------------------+----------------------------------------------------+\n");
|
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 */
|
/* next, print out the instances */
|
||||||
for (i = 0; i < PQntuples(res); i++)
|
for (i = 0; i < PQntuples(res); i++)
|
||||||
{
|
{
|
||||||
fprintf(fout, " | %-16.16s", PQgetvalue(res, i, 0));
|
fprintf(fout, " | %-*s | %-*s |\n",
|
||||||
fprintf(fout, " | %-50.50s | ", PQgetvalue(res, i, 1));
|
maxCol1Len, PQgetvalue(res, i, 0),
|
||||||
fprintf(fout, "\n");
|
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);
|
PQclear(res);
|
||||||
if (usePipe)
|
if (usePipe)
|
||||||
{
|
{
|
||||||
|
@ -614,6 +646,14 @@ rightsList(PsqlSettings *pset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void emitNtimes (FILE *fout, const char *str, int N)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < N; i++) {
|
||||||
|
fputs(str, fout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Describe a table
|
* Describe a table
|
||||||
*
|
*
|
||||||
|
|
|
@ -8,3 +8,10 @@
|
||||||
#define BYTE_ORDER BIG_ENDIAN
|
#define BYTE_ORDER BIG_ENDIAN
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef sinix
|
||||||
|
#define HAS_TEST_AND_SET
|
||||||
|
|
||||||
|
#include <abi_mutex.h>
|
||||||
|
typedef abilock_t slock_t;
|
||||||
|
#endif
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.49 1998/09/18 17:18:41 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.50 1998/09/21 02:25:27 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -273,6 +273,19 @@ static const slock_t clear_lock =
|
||||||
#define S_LOCK_FREE(lock) (test_then_add(lock,0) == 0)
|
#define S_LOCK_FREE(lock) (test_then_add(lock,0) == 0)
|
||||||
#endif /* __sgi */
|
#endif /* __sgi */
|
||||||
|
|
||||||
|
#if defined(sinix)
|
||||||
|
/*
|
||||||
|
* SINIX / Reliant UNIX
|
||||||
|
* slock_t is defined as a struct abilock_t, which has a single unsigned long
|
||||||
|
* member. (Basically same as SGI)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define TAS(lock) (!acquire_lock(lock))
|
||||||
|
#define S_UNLOCK(lock) release_lock(lock)
|
||||||
|
#define S_INIT_LOCK(lock) init_lock(lock)
|
||||||
|
#define S_LOCK_FREE(lock) (stat_lock(lock) == UNLOCKED)
|
||||||
|
#endif /* sinix */
|
||||||
|
|
||||||
|
|
||||||
#if defined(_AIX)
|
#if defined(_AIX)
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -25,7 +25,7 @@ uninstall:
|
||||||
|
|
||||||
# Rule that really do something.
|
# Rule that really do something.
|
||||||
ecpg: $(OBJ)
|
ecpg: $(OBJ)
|
||||||
$(CC) -o ecpg $(OBJ) $(LEXLIB)
|
$(CC) -o ecpg $(OBJ) $(LEXLIB) $(LDFLAGS)
|
||||||
|
|
||||||
y.tab.h y.tab.c: preproc.y
|
y.tab.h y.tab.c: preproc.y
|
||||||
$(YACC) $(YFLAGS) $<
|
$(YACC) $(YFLAGS) $<
|
||||||
|
|
Loading…
Reference in New Issue