Surround all identifiers with double quotes.
authorThomas G. Lockhart
Fri, 2 Oct 1998 16:43:41 +0000 (16:43 +0000)
committerThomas G. Lockhart
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 - [email protected] - 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 - [email protected] - 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 - [email protected] - 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 */