Обсуждение: BUG #7836: COPY command does not honor 'FORMAT' option

Поиск
Список
Период
Сортировка

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

От
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=3D# 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=3D# copy pg_aggregate to '/tmp/agg.bin' with binary;
COPY 120

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

От
hubert depesz lubaczewski
Дата:
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/

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

От
Jeff Janes
Дата:
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

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

От
Tom Lane
Дата:
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

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

От
Kurt Lidl
Дата:
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

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

От
Bruce Momjian
Дата:
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. +