Subject: [Patch] Omit virtual generated columns from test_decoding output

From: SATYANARAYANA NARLAPURAM <[email-masked]>
Date: Mon, 4 May 2026 18:11:11 -0700

Hi Hackers,

Virtual generated columns are not stored on disk, so heap_getattr() in
tuple_to_stringinfo() always returned NULL for them, producing
misleading output such as

  table public.t: INSERT: a[integer]:1 b[integer]:10 c[integer]:null

even though the user could observe a non-null value via SELECT.  Stored
generated columns continue to be emitted as before because their values
do live in the heap tuple.

This matches the pgoutput's logicalrep_should_publish_column()
which never publishes virtual generated columns. Added a regression test.
Please find the patch attached.

Thanks,
Satya

---

From: "Euler Taveira" <[email-masked]>
Date: Tue, 05 May 2026 00:08:58 -0300

> do live in the heap tuple.

I wouldn't say misleading but expected. Logical decoding relies on WAL and
virtual generated columns are not stored in the WAL.

> Please find the patch attached.

There is no guarantee that test_decoding should match the pgoutput. I agree that
test_decoding shouldn't output virtual generated columns. The problem is that it
already does it. I'm afraid that removing it should break existing applications.
(I heard that some solutions rely on test_decoding for CDC.) Should we change it
as you proposed or add an option to put it back to keep the old behavior?

I didn't review your patch but I noticed that there is a new test file for this
change. There are some concerns about the total test execution time. Do you
really need to include this test? If so, should you combine it with an existing
test file?

-- 
Euler Taveira
EDB   https://www.enterprisedb.com/

---

From: SATYANARAYANA NARLAPURAM <[email-masked]>
Date: Mon, 4 May 2026 22:16:26 -0700

Hi,

On Mon, May 4, 2026 at 8:09 PM Euler Taveira <[email-masked]> wrote:

> There is no guarantee that test_decoding should match the pgoutput.

Agreed, not trying to keep them in sync but giving as a reference.

> I agree that

It is emitting null, I am not sure if it is meaningful for the consumers to
consume this or
have taken dependency on this. Adding an extra option isn't an overkill for
this? I am open
to this idea if others feel the same.

> really need to include this test? If so, should you combine it with an

Fair concern, I moved the tests to ddl.sql.  Please find the attached v2
patch.

Thanks,
Satya

---

From: Fujii Masao <[email-masked]>
Date: Fri, 8 May 2026 13:31:01 +0900

On Tue, May 5, 2026 at 2:16 PM SATYANARAYANA NARLAPURAM
<[email-masked]> wrote:
> Fair concern, I moved the tests to ddl.sql.  Please find the attached v2 patch.

Seems you forgot to attached the patch.

Regards,

-- 
Fujii Masao

---

From: SATYANARAYANA NARLAPURAM <[email-masked]>
Date: Sat, 9 May 2026 13:58:38 -0700

Hi,

> Seems you forgot to attached the patch.

Attached now, thanks for letting ne know!

---

From: SATYANARAYANA NARLAPURAM <[email-masked]>
Date: Sat, 9 May 2026 14:00:20 -0700

Hi

> Attached now, thanks for letting ne know!

Please find the v3 patch.

Thanks,
Satya