]> granicus.if.org Git - postgresql/commitdiff
Remove undocumented support for copy syntax from before 7.3. Update comments to
authorAndrew Dunstan <andrew@dunslane.net>
Fri, 16 Mar 2007 13:41:21 +0000 (13:41 +0000)
committerAndrew Dunstan <andrew@dunslane.net>
Fri, 16 Mar 2007 13:41:21 +0000 (13:41 +0000)
reflect syntax actually supported, e.g. by including CSV params.

src/bin/psql/copy.c

index eb205ecbc279e5f711f46f78a244ef48fd2a929a..a3f22c3c14c4b4ca763564acca25a3d9d1413900 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2007, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.74 2007/02/08 11:10:27 petere Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.75 2007/03/16 13:41:21 adunstan Exp $
  */
 #include "postgres_fe.h"
 #include "copy.h"
  * parse_slash_copy
  * -- parses \copy command line
  *
- * The documented preferred syntax is:
+ * The documented syntax is:
  *     \copy tablename [(columnlist)] from|to filename
  *       [ with ] [ binary ] [ oids ] [ delimiter [as] char ] [ null [as] string ]
+ *    [ csv  [ header ] [ quote [ AS ] string ]  escape [as] string 
+ *      [ force not null column [, ...] | force quote column [, ...] ] ]
  *
  *     \copy ( select stmt ) to filename
  *       [ with ] [ binary ] [ delimiter [as] char ] [ null [as] string ]
+ *    [ csv  [ header ] [ quote [ AS ] string ]  escape [as] string 
+ *      [ force quote column [, ...] ] ]
  *
- * The pre-7.3 syntax was:
- *     \copy [ binary ] tablename [(columnlist)] [with oids] from|to filename
- *             [ [using] delimiters char ] [ with null as string ]
- *
- * The actual accepted syntax is a rather unholy combination of these,
- * plus some undocumented flexibility (for instance, the clauses after
- * WITH can appear in any order).  The accepted syntax matches what
- * the backend grammar actually accepts (see backend/parser/gram.y).
+ * Force quote only applies for copy to; force not null only applies for
+ * copy from.
  *
  * table name can be double-quoted and can have a schema part.
  * column names can be double-quoted.
@@ -216,23 +214,6 @@ parse_slash_copy(const char *args)
                        goto error;
        }
 
-       /*
-        * Allows old COPY syntax for backward compatibility 2002-06-19
-        */
-       if (pg_strcasecmp(token, "with") == 0)
-       {
-               token = strtokx(NULL, whitespace, NULL, NULL,
-                                               0, false, false, pset.encoding);
-               if (!token || pg_strcasecmp(token, "oids") != 0)
-                       goto error;
-               result->oids = true;
-
-               token = strtokx(NULL, whitespace, NULL, NULL,
-                                               0, false, false, pset.encoding);
-               if (!token)
-                       goto error;
-       }
-
        if (pg_strcasecmp(token, "from") == 0)
                result->from = true;
        else if (pg_strcasecmp(token, "to") == 0)
@@ -267,27 +248,6 @@ parse_slash_copy(const char *args)
        token = strtokx(NULL, whitespace, NULL, NULL,
                                        0, false, false, pset.encoding);
 
-       /*
-        * Allows old COPY syntax for backward compatibility.
-        */
-       if (token && pg_strcasecmp(token, "using") == 0)
-       {
-               token = strtokx(NULL, whitespace, NULL, NULL,
-                                               0, false, false, pset.encoding);
-               if (!(token && pg_strcasecmp(token, "delimiters") == 0))
-                       goto error;
-       }
-       if (token && pg_strcasecmp(token, "delimiters") == 0)
-       {
-               token = strtokx(NULL, whitespace, NULL, "'",
-                                               nonstd_backslash, true, false, pset.encoding);
-               if (!token)
-                       goto error;
-               result->delim = pg_strdup(token);
-               token = strtokx(NULL, whitespace, NULL, NULL,
-                                               0, false, false, pset.encoding);
-       }
-
        if (token)
        {
                /*