Bug: COPY FORMAT JSON includes generated columns unlike text/CSV
SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
From: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Richard Guo <guofenglinux@gmail.com>
Date: 2026-04-13T09:21:28Z
Lists: pgsql-hackers
Attachments
- v1-00001-copy-json-exclude-generated-columns.patch (application/octet-stream) patch v1
Hi hackers,
COPY TO with FORMAT json includes generated columns in the output,
while text and CSV formats correctly exclude them. Virtual generated
columns appear as null (since they aren't materialized), and stored
generated columns appear with their values Attached a patch to address
this.
Repro:
CREATE TABLE t (id int, a int,
s int GENERATED ALWAYS AS (a * 10) STORED,
v int GENERATED ALWAYS AS (a * 100) VIRTUAL);
INSERT INTO t (id, a) VALUES (1, 5);
COPY t TO STDOUT;
COPY t TO STDOUT WITH (FORMAT csv, HEADER);
COPY t TO STDOUT WITH (FORMAT json);
CREATE TABLE
INSERT 0 1
1 5
id,a
1,5
{"id":1,"a":5,"s":50,"v":null}
After the fix:
COPY t TO STDOUT WITH (FORMAT json);
{"id":1,"a":5}
Thanks,
Satya
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix COPY TO FORMAT JSON to exclude generated columns.
- f30d0c720f2e 19 (unreleased) landed