pgsql: Fix handling of redundant options with COPY for "freeze" and "he

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix handling of redundant options with COPY for "freeze" and "he
Date: 2020-10-05 00:46:28
Message-ID: E1kPEe4-00054Z-Pb@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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

The handling of those options was inconsistent, as the processing used
directly the value assigned to the option to check if it was redundant,
leading to patterns like this one to succeed (note that false is
specified first):
COPY hoge to '/path/to/file/' (header off, header on);

And the opposite would fail correctly (note that true is first here):
COPY hoge to '/path/to/file/' (header on, header off);

While on it, add some tests to check for all redundant patterns with the
options of COPY. I have gone through the code and did not notice
similar mistakes for other commands.

"header" got it wrong since b63990c, and "freeze" was wrong from the
start as of 8de72b6. No backpatch is done per the lack of complaints.

Reported-by: Rémi Lapeyre
Discussion: https://postgr.es/m/20200929072433.GA15570@paquier.xyz
Discussion: https://postgr.es/m/0B55BD07-83E4-439F-AACC-FA2D7CF50532@lenstra.fr

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/10c5291cc2c6497d5abe04dde7df649d898becc4

Modified Files
--------------
src/backend/commands/copy.c | 8 +++++--
src/test/regress/expected/copy2.out | 47 +++++++++++++++++++++++++++++++++++++
src/test/regress/sql/copy2.sql | 14 +++++++++++
3 files changed, 67 insertions(+), 2 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2020-10-05 00:46:36 pgsql: Improve stability of identity.sql regression test.
Previous Message Tom Lane 2020-10-04 20:10:04 pgsql: Make postgres.bki use the same literal-string syntax as postgres