From 9601964773b78c00f7e18b8dd9d7418e7e0290ad Mon Sep 17 00:00:00 2001 From: "Thomas G. Lockhart" Date: Fri, 2 Oct 1998 16:43:41 +0000 Subject: [PATCH] Surround all identifiers with double quotes. Formerly did so only for those which clearly required it, but that would still miss things like reserved key words which also require it. Implement the "-n" switch to revert the double quote behavior to put DQs only where there is more than lower-case, digits, and underscores. --- src/bin/pg_dump/common.c | 14 +++++++++----- src/bin/pg_dump/pg_dump.c | 13 ++++++++++--- src/bin/pg_dump/pg_dump.h | 3 ++- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c index c9a806f10a..7974a9db6d 100644 --- a/src/bin/pg_dump/common.c +++ b/src/bin/pg_dump/common.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.25 1998/09/20 03:18:42 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.26 1998/10/02 16:43:38 thomas Exp $ * * Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2 * @@ -486,6 +486,9 @@ findFuncByName(FuncInfo *finfo, int numFuncs, const char *name) * * checks input string for non-lowercase characters * returns pointer to input string or string surrounded by double quotes + * + * Note that the returned string should be used immediately since it + * uses a static buffer to hold the string. Non-reentrant but fast. */ const char * fmtId(const char *rawid) @@ -493,11 +496,12 @@ fmtId(const char *rawid) const char *cp; static char id[MAXQUERYLEN]; - for (cp = rawid; *cp != '\0'; cp++) - if (!(islower(*cp) || isdigit(*cp) || (*cp == '_'))) - break; + if (! g_force_quotes) + for (cp = rawid; *cp != '\0'; cp++) + if (!(islower(*cp) || isdigit(*cp) || (*cp == '_'))) + break; - if (*cp != '\0') + if (g_force_quotes || (*cp != '\0')) { strcpy(id, "\""); strcat(id, rawid); diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 799a244a67..ee944f6acc 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -21,7 +21,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.87 1998/10/01 01:49:12 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.88 1998/10/02 16:43:40 thomas Exp $ * * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb * @@ -100,6 +100,7 @@ extern int optind, opterr; /* global decls */ +bool g_force_quotes; /* User wants to suppress double-quotes */ bool g_verbose; /* User wants verbose narration of our * activities. */ int g_last_builtin_oid; /* value of the last builtin oid */ @@ -128,12 +129,15 @@ usage(const char *progname) fprintf(stderr, "\t -d \t\t dump data as proper insert strings\n"); fprintf(stderr, - "\t -D \t\t dump data as inserts with attribute names\n"); + "\t -D \t\t dump data as inserts" + " with attribute names\n"); fprintf(stderr, "\t -f filename \t\t script output filename\n"); fprintf(stderr, "\t -h hostname \t\t server host name\n"); fprintf(stderr, + "\t -n \t\t suppress most quotes around identifiers\n"); + fprintf(stderr, "\t -o \t\t dump object id's (oids)\n"); fprintf(stderr, "\t -p port \t\t server port number\n"); @@ -552,7 +556,7 @@ main(int argc, char **argv) progname = *argv; - while ((c = getopt(argc, argv, "adDf:h:op:st:vzu")) != EOF) + while ((c = getopt(argc, argv, "adDf:h:nop:st:vzu")) != EOF) { switch (c) { @@ -573,6 +577,9 @@ main(int argc, char **argv) case 'h': /* server host */ pghost = optarg; break; + case 'n': /* Do not force double-quotes on identifiers */ + g_force_quotes = false; + break; case 'o': /* Dump oids */ oids = 1; break; diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h index 28389a75a1..0a87093561 100644 --- a/src/bin/pg_dump/pg_dump.h +++ b/src/bin/pg_dump/pg_dump.h @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: pg_dump.h,v 1.32 1998/09/01 04:33:47 momjian Exp $ + * $Id: pg_dump.h,v 1.33 1998/10/02 16:43:41 thomas Exp $ * * Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2 * @@ -164,6 +164,7 @@ typedef struct _AclType /* global decls */ +extern bool g_force_quotes; /* double-quotes for identifiers flag */ extern bool g_verbose; /* verbose flag */ extern int g_last_builtin_oid; /* value of the last builtin oid */ extern FILE *g_fout; /* the script file */ -- 2.11.0