psql's \copy (query) with a delimiter yields a syntax error:

  test=> \copy foo to foo.txt delimiter '|'

  test=> \copy (select * from foo) to foo.txt

  test=> \copy (select * from foo) to foo.txt delimiter '|'
  ERROR:  syntax error at or near "USING"
  LINE 1: COPY ( select * from foo ) TO STDOUT USING DELIMITERS '|'

The problem is that \copy sends USING DELIMITERS for backward
compatibility (comment on line 502 of src/bin/psql/copy.c) but that
COPY (query) doesn't support USING DELIMITERS:

  CopyStmt:   COPY opt_binary qualified_name opt_column_list opt_oids
              copy_from copy_file_name copy_delimiter opt_with copy_opt_list
              | COPY select_with_parens TO copy_file_name opt_with

              /* USING DELIMITERS kept for backward compatibility. 2002-06-15 */
             opt_using DELIMITERS Sconst

What should be fixed -- COPY or \copy?  Does psql's \copy still
need backward compatibility to unsupported pre-7.3?

Michael Fuhr

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to