agora inbox for pgsql-committers@postgresql.org
help / color / mirror / Atom feedFrom: Andrew Dunstan <andrew@dunslane.net>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: COPY TO FORMAT JSON: respect column list order
Date: Sat, 27 Jun 2026 22:10:21 +0000
Message-ID: <E1wdbED-000SMd-0p@gemulon.postgresql.org> (raw)
COPY TO FORMAT JSON: respect column list order
When COPY TO with FORMAT json is given an explicit column list that
names all columns in a different order, the JSON output incorrectly
used the table's physical column order instead of the requested order.
This happened because BeginCopyTo() only built a restricted TupleDesc
when list_length(attnumlist) < tupDesc->natts. When all columns are
listed (just reordered), this condition was false and no projected
TupleDesc was built, causing CopyToJsonOneRow() to emit columns in
physical order.
Fix by also building the projected TupleDesc when an explicit column
list was provided (attnamelist != NIL), even if it names all columns.
Author: Baji Shaik <baji.pgdev@gmail.com>
Reviewed-by: Andrew Dunstan <andrew@dunslane.net>
Discussion: https://postgr.es/m/CA+fm-ROd4cNKM524n6EdgtZ9xOzOHJDNv8J_9Mvr2+2t1qWSDw@mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/effb923d9dec8fd4a5102fee80e52d65d86747c8
Modified Files
--------------
src/backend/commands/copyto.c | 14 +++++++++-----
src/test/regress/expected/copy.out | 9 +++++++++
src/test/regress/sql/copy.sql | 9 +++++++++
3 files changed, 27 insertions(+), 5 deletions(-)
Message-ID: <E1wdbED-000SMd-0p@gemulon.postgresql.org>
Permalink: ../E1wdbED-000SMd-0p@gemulon.postgresql.org/
Also on: postgresql.org/message-id/E1wdbED-000SMd-0p@gemulon.postgresql.org
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-committers@postgresql.org
Cc: andrew@dunslane.net, pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: COPY TO FORMAT JSON: respect column list order
In-Reply-To: <E1wdbED-000SMd-0p@gemulon.postgresql.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox