BUG #7836: COPY command does not honor 'FORMAT' option

Started by Kurt Lidlabout 13 years ago6 messagesbugs
Jump to latest
#1Kurt Lidl
kurt.lidl@cello.com

The following bug has been logged on the website:

Bug reference: 7836
Logged by: Kurt Lidl
Email address: kurt.lidl@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-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

In reply to: Kurt Lidl (#1)
Re: BUG #7836: COPY command does not honor 'FORMAT' option

On Tue, Jan 29, 2013 at 06:20:05PM +0000, kurt.lidl@cello.com wrote:

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-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Kurt Lidl
kurt.lidl@cello.com
In reply to: hubert depesz lubaczewski (#2)
Re: BUG #7836: COPY command does not honor 'FORMAT' option

On 1/29/2013 3:19 PM, hubert depesz lubaczewski wrote:

On Tue, Jan 29, 2013 at 06:20:05PM +0000, kurt.lidl@cello.com wrote:

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

Oops. Silly me.

Thanks for pointing out my missing parens.

-Kurt

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

#4Jeff Janes
jeff.janes@gmail.com
In reply to: hubert depesz lubaczewski (#2)
Re: BUG #7836: COPY command does not honor 'FORMAT' option

On Tue, Jan 29, 2013 at 12:19 PM, hubert depesz lubaczewski
<depesz@depesz.com> wrote:

On Tue, Jan 29, 2013 at 06:20:05PM +0000, kurt.lidl@cello.com wrote:

template1=# copy pg_aggregate to '/tmp/agg.bin' with format binary;

correct syntax:

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-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jeff Janes (#4)
Re: BUG #7836: COPY command does not honor 'FORMAT' option

Jeff Janes <jeff.janes@gmail.com> writes:

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.

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-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#6Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#5)
Re: BUG #7836: COPY command does not honor 'FORMAT' option

On Tue, Jan 29, 2013 at 05:52:16PM -0500, Tom Lane wrote:

Jeff Janes <jeff.janes@gmail.com> writes:

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.

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.

FYI, the need for single-quotes around 'binary' was removed with a patch
and backpatched.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

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