]> granicus.if.org Git - postgresql/commitdiff
Surround all identifiers with double quotes.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Fri, 2 Oct 1998 16:43:41 +0000 (16:43 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Fri, 2 Oct 1998 16:43:41 +0000 (16:43 +0000)
 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
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h

index c9a806f10a6bd9b3f2936eeb5336e61327bd683d..7974a9db6ddaa357325ddeec8437fb99e673d260 100644 (file)
@@ -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);
index 799a244a67ff715123f228e9a94118d8dc6c90c2..ee944f6acc834c308fd1cc09db56371d51b559c6 100644 (file)
@@ -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,11 +129,14 @@ 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,
@@ -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;
index 28389a75a1528e4cd753feb9ed7ad81a0ba4ba74..0a87093561c7093bbce1f3b1f17ac7aed61fb9c1 100644 (file)
@@ -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 */