Discussion:
BUG #7836: COPY command does not honor 'FORMAT' option
(too old to reply)
k***@cello.com
2013-01-29 18:20:05 UTC
Permalink
The following bug has been logged on the website:

Bug reference: 7836
Logged by: Kurt Lidl
Email address: ***@cello.com
PostgreSQL version: 9.2.2
Operating system: FreeBSD 9.1 (i386 - 32bit)
Description:

The COPY documentation says that with 9.1 (or newer), there is an option
called "FORMAT", so the user can do "FORMAT binary". The old way just used
a keyword "binary", and this way is supported for backwards compatibility.

However, it doesn't appear that the "FORMAT" keyword works properly:

psql -U pgsql template1
psql (9.2.2)
Type "help" for help.
template1=# copy pg_aggregate to '/tmp/agg.bin' with format binary;
ERROR: syntax error at or near "format"
LINE 1: copy pg_aggregate to '/tmp/agg.bin' with format binary;
^
template1=# copy pg_aggregate to '/tmp/agg.bin' with binary;
COPY 120
--
Sent via pgsql-bugs mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
hubert depesz lubaczewski
2013-01-29 20:19:05 UTC
Permalink
Post by k***@cello.com
template1=# copy pg_aggregate to '/tmp/agg.bin' with format binary;
correct syntax:

copy pg_aggregate to '/tmp/agg.bin' with (format 'binary');

Best regards,

depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
--
Sent via pgsql-bugs mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
Jeff Janes
2013-01-29 21:46:32 UTC
Permalink
On Tue, Jan 29, 2013 at 12:19 PM, hubert depesz lubaczewski
Post by hubert depesz lubaczewski
Post by k***@cello.com
template1=# copy pg_aggregate to '/tmp/agg.bin' with format binary;
copy pg_aggregate to '/tmp/agg.bin' with (format 'binary');
I was just about to call this confirmed before seeing your email.

I figured out the need for the parenthesis by reading the docs. The
need to also quote 'binary' really took me by surprise, especially as
the other two formats don't need to be quoted. I assume the reason
for this is the level of reservedness of the various words in bison.
But is this a doc bug? Should <literal>binary</literal> be shown
quoted if it needs to be used quote? Or at least maybe the Example
section could include an example of the use of FORMAT.


Cheers,

Jeff
--
Sent via pgsql-bugs mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
Tom Lane
2013-01-29 22:52:16 UTC
Permalink
Post by Jeff Janes
I figured out the need for the parenthesis by reading the docs. The
need to also quote 'binary' really took me by surprise, especially as
the other two formats don't need to be quoted. I assume the reason
for this is the level of reservedness of the various words in bison.
Yeah, BINARY is a type_func_name_keyword and hence not covered by the
copy_generic_opt_arg production.
Post by Jeff Janes
But is this a doc bug? Should <literal>binary</literal> be shown
quoted if it needs to be used quote? Or at least maybe the Example
section could include an example of the use of FORMAT.
Probably better to see if we can fix the grammar instead of documenting
a klugy workaround. I'm not sure we can easily allow fully-reserved
words there, but type_func_name_keyword might work.

regards, tom lane
--
Sent via pgsql-bugs mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
Kurt Lidl
2013-01-29 20:58:29 UTC
Permalink
Post by hubert depesz lubaczewski
Post by k***@cello.com
template1=# copy pg_aggregate to '/tmp/agg.bin' with format binary;
copy pg_aggregate to '/tmp/agg.bin' with (format 'binary');
Best regards,
depesz
Oops. Silly me.

Thanks for pointing out my missing parens.

-Kurt
--
Sent via pgsql-bugs mailing list (pgsql-***@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
Loading...