Re: Buggy handling of redundant options in COPY

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>, Rémi Lapeyre <remi.lapeyre@lenstra.fr>
Date: 2020-09-29T07:35:39Z
Lists: pgsql-hackers
út 29. 9. 2020 v 9:24 odesílatel Michael Paquier <michael@paquier.xyz>
napsal:

> Hi all,
>
> While diving into the CF, I have noticed the following message from
> Remy (in CC):
>
> https://www.postgresql.org/message-id/0B55BD07-83E4-439F-AACC-FA2D7CF50532@lenstra.fr
>
> The following two cases should fail the same way, but the second does
> not because we check directly the flag value extracted from the
> DefElem to see if the option is repeated or not:
> =# copy (select 1) to '/tmp/data.txt' (header on, header off);
> ERROR:  42601: conflicting or redundant options
> =# copy (select 1) to '/tmp/data.txt' (header off, header on);
> ERROR:  0A000: COPY HEADER available only in CSV mode
>
> Looking quickly at the usages of defGetBoolean() across the code, it
> seems that we are rather consistent on a command-basis to handle such
> cases (EXPLAIN does not care, subscriptions do, etc.), while COPY is
> a mixed bag that clearly aims at checking for redundant options
> correctly.  So, attached is a patch to do that, with tests for the
> various options while on it.  This is not something worth a
> back-patch in my opinion.
>
> Any thoughts?
>

+1

Pavel

--
> Michael
>

Commits

  1. Fix handling of redundant options with COPY for "freeze" and "header"