Bug: COPY FORMAT JSON includes generated columns unlike text/CSV
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
Attachments:
v1-00001-copy-json-exclude-generated-columns.patchapplication/octet-stream; name=v1-00001-copy-json-exclude-generated-columns.patchDownload+19-1
On Mon, Apr 13, 2026 at 5:21 PM SATYANARAYANA NARLAPURAM
<satyanarlapuram@gmail.com> wrote:
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.
The patch looks good to me.
It seems there's a ``git apply`` issue applying the V1 patch.
The attached v2 is the same as your v1, it should apply without issue
using `git apply` or `git am`.
Attachments:
v2-0001-COPY-FORMAT-JSON-with-generated.patchtext/x-patch; charset=US-ASCII; name=v2-0001-COPY-FORMAT-JSON-with-generated.patchDownload+19-2
On 2026-04-14 Tu 10:46 AM, jian he wrote:
On Mon, Apr 13, 2026 at 5:21 PM SATYANARAYANA NARLAPURAM
<satyanarlapuram@gmail.com> wrote: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.The patch looks good to me.
It seems there's a ``git apply`` issue applying the V1 patch.
The attached v2 is the same as your v1, it should apply without issue
using `git apply` or `git am`.
Thanks. pushed.
cheers
andrew
--
Andrew Dunstan
EDB:https://www.enterprisedb.com