Re: "COPY foo FROM STDOUT" and ecpg - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: "COPY foo FROM STDOUT" and ecpg
Date
Msg-id 512CE416.5080503@vmware.com
Whole thread Raw
In response to Re: "COPY foo FROM STDOUT" and ecpg  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: "COPY foo FROM STDOUT" and ecpg  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: "COPY foo FROM STDOUT" and ecpg  (Greg Stark <stark@mit.edu>)
List pgsql-hackers
On 26.02.2013 18:23, Tom Lane wrote:
> Heikki Linnakangas<hlinnakangas@vmware.com>  writes:
>> While looking at Fujita Etsuro's patch to allow copy to/from a shell
>> command, I noticed that the grammar currently allows these:
>
>> COPY foo FROM STDOUT
>> COPY foo TO STDIN
>
>> In other words, STDIN and STDOUT can be used completely interchangeably.
>> However, the ecpg grammar is more strict about that:
>
>> ERROR: COPY TO STDIN is not possible
>
>> Any particular reason for ecpg to check that, while the backend doesn't
>> care? I think we should just remove those checks from the ecpg grammar.
>
> Agreed, but your draft patch doesn't do that completely.  It should only
> make tests that correspond to what the error message says.

Sorry, I don't understand what you're saying. Can you elaborate?

> (I assume
> the backend will bounce the other cases at some post-grammar stage.)

No. All four combinations of FROM/TO and STDIN/STDOUT are accepted:

postgres=# copy foo from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.>> foo>> \.
postgres=# copy foo from stdout;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.>> bar>> \.
postgres=# copy foo to stdin;
foo
bar
postgres=# copy foo to stdout;
foo
bar

- Heikki



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: pg_xlogdump
Next
From: Fujii Masao
Date:
Subject: Re: pg_xlogdump compile error