Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wCDUG-001lnX-2P for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 09:21:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCDUF-005uaA-08 for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 09:21:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wCDUE-005uZo-1q for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 09:21:43 +0000 Received: from mail-ua1-x931.google.com ([2607:f8b0:4864:20::931]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCDUD-00000000lzR-1sVA for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 09:21:42 +0000 Received: by mail-ua1-x931.google.com with SMTP id a1e0cc1a2514c-953b0a7ee18so1027020241.3 for ; Mon, 13 Apr 2026 02:21:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776072101; cv=none; d=google.com; s=arc-20240605; b=NPkmKZ+tcKnv0GGehWWtDJuS8CApe2JxbiNkUDFeO7Rz/XrFhNpHYc1ZsmM9+sk/A1 P860iA1IiHuxp6LCX4UQlTLjmzkSBQ5hoVGwkXnZ8Ki08PjmwZOV83tfBJqawqOrTQ4m VYZi8fVH9dHdlg3TSirjnsa7Sh4i/fFR2XG5C7wd4lb5lAZeoin48nJ8XfKCprgOqHB8 UuchBcwFueel506e3CAwmzeICusOCQQ9gAhPQqoCXcLFrHAR7F18wPOxUsDTnWeZU5ud u+SjT0USH192zVRyAM1TD2+o9zQNcPEv7WVIL4F6SNtTKi2vIbYl77O/+EbhoaZxrdoG 5yKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=XQoRgZFiDur+tEoFdANbi2QNfiD48Xwd3jfvlUkGmQg=; fh=p9SZ3M0/yGZbNr+EoP5AuEOmPezTfqKg11ep0W4VdbQ=; b=fC+918jaguhrCJ6PhokXqRNi4F8aNU2Tmy/phoYBsXvm+DwnNXq3Dd1UBzNQtFkmyT tRrOhos7tpXLd9lEALsl8z1Wz47ajzmKILkOfqwQawDjkUWDYLdhEzN3/8MBDXQBQjek 0LQNmULcKX1/Mxy+di4Vz2SbqbntLPHoRaNlS08gslshqrkMcWks+0IW1RSW8YRdGhnt O3nywongYkIJZhFTwzub10XoCUZCz+XVxdYFlboTZ38dD6gjrl5ksu3kqlc5gcVjhxIE ksD3Vdn8vJpcLC4zg1qPdvWcljZeH2G1G3xDh4VVbNJHFQ23BlRTb1ENMescMEKOec+c J6Rg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776072100; x=1776676900; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=XQoRgZFiDur+tEoFdANbi2QNfiD48Xwd3jfvlUkGmQg=; b=bcunPZDK7ccnuLlTHZi/b73p4s0apA/Yddl868Sloujcb3MLRgzV9UCQORWlVvuPtg VWiMDnLwZBEYExixH+j9p3wggLZodnx1RcbId8yuGEKcHNwMeafhdd1QjBvmUy6Vlz1B 4RJLhcrR0GE1dme69Z78j23g/3A+4x+O5dsuaE565oP6c7cYaTFqfhkwfJvQjbHSlitC 9FFkRCyb/haSgECG+IVqj2uHCqTa52d40EEbARhSFF/UepqltxmA+JS5l69c7jhwxvN7 gaFR6jajFN4WB0w5xOFivJ8AhIWkms9ZpOeVPP7+voEXtoJViaCt2VFKN4joOQXeG9NM EjVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776072101; x=1776676901; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XQoRgZFiDur+tEoFdANbi2QNfiD48Xwd3jfvlUkGmQg=; b=WkBJpO9VU0B+CBhPbH9FviCQhWTJuopjcVaCno/jwbCBw76e2eM7SQeDdRpwW1fpJF L2qK72waeS+Xnfb/j7p6oP0Ak4tBGsW8ooCyA2sh0D8+T450TpfHEcvnNLF38XVtPnVs Tri13Y8R8zUYw564sYIWUgDIb0y4qfIKUo4KioiaE7d+SAhlWcgQRHvTZQuhGDKyAIQs d5JDmqW9uZA5C1Bfy0xov/vaCq8ulFYr/PzPi01Bkil7Kn++5HqvuxvYJeLPJikMUk1q qHEJ0ewXwIMmo+i1prbEhQZVK1ZU8Yn/aEKoqZtYHzV2401aN8carszXXItkTYnjn/Rj hRfw== X-Gm-Message-State: AOJu0Yy/lk2KAcI9VbEwb0gGFrPDXrBTZV910CbWKJ9C4xd/njdereQ+ j0DfFPtx48cJ7HqVHYJQKjbWxWPDo3UlxQztffXw8Yag0IKG5cmXv3ZecZB6TS8FzqE0Ag9YKyd ry+0TnKebNPE9q85Io18cUbdl3fSvQBpljJdQ X-Gm-Gg: AeBDiet6uF9Du1AvmwVCBra4fmjIRX1UQaAG2+MQ+k007IXZ0b8QAEJIDG52ugjFA7b 8QPDa7w9KobDFyG8rEgc7Wtc1CzRZESdvgvmOi9eLo+i6ydC87lwT2E7tbdEt0eGdMqC3e2Yz83 /AABJ+4dXm0r770G12/5UwtsE0y9nGXzKHfIo2G+tYzio9nGe/BsxVz0hIDmt8eQXHmtwPMalNM M3WtS0N9D93/Z7X3YFRZQrgYmTiUrUtdqPJJ/sEKwsHwAsJmjfLPlZc12mNn4f3OLAs7xWBxFjT 8cAxhRPPDEOwszcL2g== X-Received: by 2002:a05:6102:50a1:b0:607:dde7:4fc3 with SMTP id ada2fe7eead31-60a019856a8mr4413119137.32.1776072100605; Mon, 13 Apr 2026 02:21:40 -0700 (PDT) MIME-Version: 1.0 From: SATYANARAYANA NARLAPURAM Date: Mon, 13 Apr 2026 02:21:28 -0700 X-Gm-Features: AQROBzAKuFPUQvkFLZpPX-otsAiF3P1bpwX2zASi17jx5je6lu8qnv-S-gK68Gg Message-ID: Subject: Bug: COPY FORMAT JSON includes generated columns unlike text/CSV To: PostgreSQL Hackers , Richard Guo Content-Type: multipart/mixed; boundary="000000000000a7120e064f5402aa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a7120e064f5402aa Content-Type: multipart/alternative; boundary="000000000000a7120c064f5402a8" --000000000000a7120c064f5402a8 Content-Type: text/plain; charset="UTF-8" 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 --000000000000a7120c064f5402a8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi hackers,

COPY TO with FORMAT json includes gene= rated columns in the output,
while text and CSV formats correctly exclud= e them.=C2=A0 Virtual generated
columns appear as null (since they aren&= #39;t materialized), and stored
generated columns appear with their valu= es=C2=A0 Attached a patch to address this.

Repro:<= br>
=C2=A0 =C2=A0 CREATE TABLE t (id int, a int,
=C2=A0 =C2=A0 =C2=A0= =C2=A0 s int GENERATED ALWAYS AS (a * 10) STORED,
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 v int GENERATED ALWAYS AS (a * 100) VIRTUAL);
=C2=A0 =C2=A0 INSER= T INTO t (id, a) VALUES (1, 5);

=C2=A0 =C2=A0 COPY= t TO STDOUT;
=C2=A0 =C2=A0 COPY t TO STDOUT WITH (FORMAT csv, HEADER);<= br>=C2=A0 =C2=A0 COPY t TO STDOUT WITH (FORMAT json);
CREATE TABLE
IN= SERT 0 1
1 =C2=A0 =C2=A0 =C2=A0 5
id,a
1,5
{"id&quo= t;:1,"a":5,"s":50,"v":null}=C2=A0
<= br>
After the fix:
COPY t TO STDOUT WITH (FORMAT json);=
{"id":1,"a":5}=C2=A0

Thanks,
Satya=
--000000000000a7120c064f5402a8-- --000000000000a7120e064f5402aa Content-Type: application/octet-stream; name="v1-00001-copy-json-exclude-generated-columns.patch" Content-Disposition: attachment; filename="v1-00001-copy-json-exclude-generated-columns.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnwzgmos0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKaW5kZXggZjBlMDE0N2MuLmU2ZTljODJkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYwpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCXsKIAkJY3N0YXRlLT5qc29uX2J1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CiAKLQkJaWYg KGF0dG5hbWVsaXN0ICE9IE5JTCAmJiByZWwpCisJCWlmIChyZWwgJiYgbGlzdF9sZW5ndGgoY3N0 YXRlLT5hdHRudW1saXN0KSA8IHR1cERlc2MtPm5hdHRzKQogCQl7CiAJCQlpbnQJCQluYXR0cyA9 IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7CiAJCQlUdXBsZURlc2MJcmVzdWx0RGVz YzsKQEAgLTEwNDEsNiArMTA0MSwxMyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkvKgogCQkJICogQnVpbGQgYSBUdXBsZURlc2MgZGVzY3JpYmluZyBvbmx5IHRoZSBzZWxl Y3RlZCBjb2x1bW5zIHNvIHRoYXQKIAkJCSAqIGNvbXBvc2l0ZV90b19qc29uKCkgZW1pdHMgdGhl IHJpZ2h0IGNvbHVtbiBuYW1lcyBhbmQgdHlwZXMuCiAJCQkgKi8KIAkJCXJlc3VsdERlc2MgPSBD cmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhuYXR0cyk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3N0b3JlZC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2dlbmVyYXRlZF9zdG9yZWQub3V0CmluZGV4IDQzY2RkZWFjLi40ZDMyOWM2MCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfc3RvcmVkLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF9zdG9yZWQub3V0CkBAIC01 NDEsNiArNTQxLDEyIEBAIFNFTEVDVCAqIEZST00gZ3Rlc3QzIE9SREVSIEJZIGE7CiAgNCB8IDEy CiAoNCByb3dzKQogCistLSBDT1BZIEpTT04gc2hvdWxkIGV4Y2x1ZGUgZ2VuZXJhdGVkIGNvbHVt bnMsIHNhbWUgYXMgdGV4dC9DU1YKK0NPUFkgZ3Rlc3QxIFRPIHN0ZG91dCBXSVRIIChGT1JNQVQg anNvbik7Cit7ImEiOjF9Cit7ImEiOjJ9Cit7ImEiOjN9Cit7ImEiOjR9CiAtLSBudWxsIHZhbHVl cwogQ1JFQVRFIFRBQkxFIGd0ZXN0MiAoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRF RCBBTFdBWVMgQVMgKE5VTEwpIFNUT1JFRCk7CiBJTlNFUlQgSU5UTyBndGVzdDIgVkFMVUVTICgx KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1 YWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQK aW5kZXggMjM0MDYxZmEuLmZjNDFjNDgwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dApAQCAtNTM1LDYgKzUzNSwxMiBAQCBTRUxFQ1QgKiBG Uk9NIGd0ZXN0MyBPUkRFUiBCWSBhOwogIDQgfCAxMgogKDQgcm93cykKIAorLS0gQ09QWSBKU09O IHNob3VsZCBleGNsdWRlIGdlbmVyYXRlZCBjb2x1bW5zLCBzYW1lIGFzIHRleHQvQ1NWCitDT1BZ IGd0ZXN0MSBUTyBzdGRvdXQgV0lUSCAoRk9STUFUIGpzb24pOworeyJhIjoxfQoreyJhIjoyfQor eyJhIjozfQoreyJhIjo0fQogLS0gbnVsbCB2YWx1ZXMKIENSRUFURSBUQUJMRSBndGVzdDIgKGEg aW50IFBSSU1BUlkgS0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChOVUxMKSBWSVJUVUFM KTsKIElOU0VSVCBJTlRPIGd0ZXN0MiBWQUxVRVMgKDEpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZ2VuZXJhdGVkX3N0b3JlZC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9n ZW5lcmF0ZWRfc3RvcmVkLnNxbAppbmRleCAyODAwMjFkNy4uMTA2NDgzOWQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF9zdG9yZWQuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF9zdG9yZWQuc3FsCkBAIC0yMzksNiArMjM5LDkgQEAgQ09Q WSBndGVzdDMgKGEsIGIpIEZST00gc3RkaW47CiAKIFNFTEVDVCAqIEZST00gZ3Rlc3QzIE9SREVS IEJZIGE7CiAKKy0tIENPUFkgSlNPTiBzaG91bGQgZXhjbHVkZSBnZW5lcmF0ZWQgY29sdW1ucywg c2FtZSBhcyB0ZXh0L0NTVgorQ09QWSBndGVzdDEgVE8gc3Rkb3V0IFdJVEggKEZPUk1BVCBqc29u KTsKKwogLS0gbnVsbCB2YWx1ZXMKIENSRUFURSBUQUJMRSBndGVzdDIgKGEgaW50IFBSSU1BUlkg S0VZLCBiIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChOVUxMKSBTVE9SRUQpOwogSU5TRVJUIElO VE8gZ3Rlc3QyIFZBTFVFUyAoMSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9n ZW5lcmF0ZWRfdmlydHVhbC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmly dHVhbC5zcWwKaW5kZXggNGQ5YWQzYzUuLjliMzI0MTNlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCkBAIC0yMzksNiArMjM5LDkgQEAgQ09QWSBndGVzdDMg KGEsIGIpIEZST00gc3RkaW47CiAKIFNFTEVDVCAqIEZST00gZ3Rlc3QzIE9SREVSIEJZIGE7CiAK Ky0tIENPUFkgSlNPTiBzaG91bGQgZXhjbHVkZSBnZW5lcmF0ZWQgY29sdW1ucywgc2FtZSBhcyB0 ZXh0L0NTVgorQ09QWSBndGVzdDEgVE8gc3Rkb3V0IFdJVEggKEZPUk1BVCBqc29uKTsKKwogLS0g bnVsbCB2YWx1ZXMKIENSRUFURSBUQUJMRSBndGVzdDIgKGEgaW50IFBSSU1BUlkgS0VZLCBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChOVUxMKSBWSVJUVUFMKTsKIElOU0VSVCBJTlRPIGd0ZXN0 MiBWQUxVRVMgKDEpOwo= --000000000000a7120e064f5402aa--