When UPDATE a row in a table with BEFORE ROW UPDATE trigger, the XMAX of new tuple is set to current XID - Mailing list pgsql-general

From Charles Qi
Subject When UPDATE a row in a table with BEFORE ROW UPDATE trigger, the XMAX of new tuple is set to current XID
Date
Msg-id CAEawgcJN2V0MTzZu5gi=csNapnJzogxJJqUFSphu6r=OXjorng@mail.gmail.com
Whole thread Raw
Responses Re: When UPDATE a row in a table with BEFORE ROW UPDATE trigger, the XMAX of new tuple is set to current XID
List pgsql-general
And if we do the updates in multiple subtransactions, multixact will be created, which is not created when the BEFORE ROW UPDATE trigger is absent.

Is this behavior by design? If so, what is the purpose for the behavior?

Tested version:
PostgreSQL 14.18 (Ubuntu 14.18-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit

The attached file reproduce.sql can be used to reproduce the behavior. 
Attachment

pgsql-general by date:

Previous
From: Pavel Stehule
Date:
Subject: Re: Stored procedures or raw queries
Next
From: Philip Semanchuk
Date:
Subject: Re: Stored procedures or raw queries