mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Fix for \z formatting from Tom Lane.
This commit is contained in:
		@@ -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) $<
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user