COPY TO FORMAT JSON: respect column list order
Andrew Dunstan <andrew@dunslane.net>
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
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/commands/copyto.c | modified | +9 −5 |
| src/test/regress/expected/copy.out | modified | +9 −0 |
| src/test/regress/sql/copy.sql | modified | +9 −0 |
Discussion
- uuidv7 improperly accepts dates before 1970-01-01 20 messages · 2026-04-25 → 2026-07-03