Thread: BUG #7836: COPY command does not honor 'FORMAT' option
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
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/
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
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
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
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. +