Re: \copy (query) delimiter syntax error - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: \copy (query) delimiter syntax error
Date
Msg-id 63462.24.211.165.134.1170521549.squirrel@www.dunslane.net
Whole thread Raw
In response to \copy (query) delimiter syntax error  (Michael Fuhr <mike@fuhr.org>)
Responses Re: \copy (query) delimiter syntax error  (Michael Fuhr <mike@fuhr.org>)
List pgsql-hackers
Michael Fuhr wrote:
> psql's \copy (query) with a delimiter yields a syntax error:
>
>   test=> \copy foo to foo.txt delimiter '|'
>   (works)
>
>   test=> \copy (select * from foo) to foo.txt
>   (works)
>
>   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
>                 copy_opt_list
>
>   copy_delimiter:
>               /* 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?
>


I'd say fix psql. Not sure how far back we should backpatch it. It's
interesting that this has been there since 8.0 and is only now discovered.

cheers

andrew




pgsql-hackers by date:

Previous
From: "Simon Riggs"
Date:
Subject: Re: Referential Integrity and SHARE locks
Next
From: Michael Fuhr
Date:
Subject: Re: \copy (query) delimiter syntax error