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.94.2) (envelope-from ) id 1ujhya-00B3LK-Bu for pgsql-general@arkaria.postgresql.org; Wed, 06 Aug 2025 17:30:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ujhyY-00HBCJ-64 for pgsql-general@arkaria.postgresql.org; Wed, 06 Aug 2025 17:30:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ujdPC-00FeRZ-Uf for pgsql-general@lists.postgresql.org; Wed, 06 Aug 2025 12:38:06 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ujdPA-0013tY-1X for pgsql-general@lists.postgresql.org; Wed, 06 Aug 2025 12:38:06 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-af949bdf36cso756326666b.0 for ; Wed, 06 Aug 2025 05:38:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754483881; x=1755088681; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Di39MAer8l8iR2vv+QMqbq+KXoQpW1hAXHvwYM7XEGA=; b=i0UaV/BWMw6eGJ5hQonq9p1wO4Le+O8pG7RH1sxLdiwy61zRJuGua5fxA4Ek6SfKWx vqXc6auXyF5uq+CWf5VS5Nx10jm2a5ZkwSEqqqjUZCR7WhR0BrZ83fO7FqpYUCOBiBu+ hHtRrWL6wHGXDmwTNfhqWBTFOjhH+bGQhUYEvntiKT75hZSk2TxC57+BbQz7QTZkviH+ Y9q9gAbfxQzYQo1B/b2AkGw04swStjxU58KCSxX6J+ua5V/63kbav+o4nObUrexc3R6X xQW9H5o8vtxECKDgdTPq2FV+Ck8z87QGZQbANgB8i892WOBGuonvVP6paszJGDm74+l3 Zagw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754483881; x=1755088681; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Di39MAer8l8iR2vv+QMqbq+KXoQpW1hAXHvwYM7XEGA=; b=aHNTEDyGPtMofh61pDmutucgstWfuSSfXagZrLFIqgUb3vY4I9glXesl8gexIMsK2L A3MR0QHNtSBEwRHOnS2PPGqgM9RoffeL9WAsEN4yGmt2sY7SreUP4qc6BtfRsQBbQB+J 2d7m146I3jY5SqA6mOM5R7a2hZJ69g/4Pbq0eRt4WN0lNXSgknrVeFDA/EKy86LcXqx/ HX6+3pMLz9rpO/VOoSOOQvzwb628dXksYsL3rXKXRFh2fdklAuUZFma/k0KfxBJTvEC3 D6pNCF+gcDXzaL0iEhC7vTar0xvNveagOtCgfl4y4vAaNcUa6xzq/NA27Xe7X2W7DW8l bkUA== X-Gm-Message-State: AOJu0Yyv4T3aTEEwR7dSAZmwapBCOyYU+etrKGScI6f1WcQ/Sllg17Tv mkZoHWoWhMPqloe9RodZJpU+P2vh5rP5gWI5jn0IGgmxVH8ZNgvPGqtISPMoAlrAWalzt7lvIv1 i//hv6gazAjZgGkCrJ3Wv8Lf1txM2bakfQ5Dx0vk= X-Gm-Gg: ASbGncuOaQVV1pKBP1OU9ZJhn6q4MtykMKhirftUqOmUIOPbF7yiXRYvbVYNquM8s2o xdz2IMo36GxpYAnlUajKpau8S3dhBfSLFa79Dty5YUVaeSUynGcz27y+zzjtOGrt61+nzbaN3gg I0bAF7oscocSbyR7Cjei96ZiY/PV7foWEUuhZ4uCIqwvV93tD5lnO7rh76fVR3ykllKAYy+K+DG IKu1Q== X-Google-Smtp-Source: AGHT+IGOQVzabyILH15A9Uk3jQvnAYGud3CELKD2KGZJYFmasdrbcL5/4Cu8guH/zYBXYX+PWzRglqLBBumN8dWur/k= X-Received: by 2002:a17:907:7e9c:b0:af9:3eea:65bd with SMTP id a640c23a62f3a-af992bc3df1mr201503066b.61.1754483881011; Wed, 06 Aug 2025 05:38:01 -0700 (PDT) MIME-Version: 1.0 From: Charles Qi Date: Wed, 6 Aug 2025 20:37:49 +0800 X-Gm-Features: Ac12FXzl8Fz0w5hqxV4--s5rcoizseW_qwp8NBFoE4haFTWpEGDwcY6nHUog8m0 Message-ID: Subject: When UPDATE a row in a table with BEFORE ROW UPDATE trigger, the XMAX of new tuple is set to current XID To: pgsql-general@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000007e20bd063bb19c44" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007e20bd063bb19c44 Content-Type: multipart/alternative; boundary="0000000000007e20bd063bb19c42" --0000000000007e20bd063bb19c42 Content-Type: text/plain; charset="UTF-8" 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. --0000000000007e20bd063bb19c42 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
And if we do the updates in multiple subtransactions, mult= ixact will be created, which is not created when the BEFORE ROW UPDATE trig= ger is absent.

Is this behavior by design? If so, what is the purpo= se for the behavior?

Tested version:
PostgreSQL 14.1= 8 (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 a= ttached file=C2=A0reproduce.sql can be used to reproduce the behavior.=C2= =A0
--0000000000007e20bd063bb19c42-- --0000000000007e20bd063bb19c44 Content-Type: application/octet-stream; name="reproduce.sql" Content-Disposition: attachment; filename="reproduce.sql" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdzy6i1d0 LS1DUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Ow0KY3JlYXRlIHRhYmxlIHRfdGVzdCAoaWQg aW50LCBjb250ZW50IHRleHQpOw0KaW5zZXJ0IGludG8gdF90ZXN0IHZhbHVlcyAoMSwgJ3Rlc3Qn KTsNCnVwZGF0ZSB0X3Rlc3Qgc2V0IGNvbnRlbnQ9J3Rlc3QxJyB3aGVyZSBpZD0xOw0KDQotLXNx bCBmb3IgaW5zcGVjdCB0aGUgcGFnZQ0KU0VMRUNUIHRfeG1pbiwgdF94bWF4LCB0X2N0aWQsIHJh d19mbGFncywgY29tYmluZWRfZmxhZ3MgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdl KCd0X3Rlc3QnLCAwKSksIA0KTEFURVJBTCBoZWFwX3R1cGxlX2luZm9tYXNrX2ZsYWdzKHRfaW5m b21hc2ssIHRfaW5mb21hc2syKQ0KV0hFUkUgdF9pbmZvbWFzayBJUyBOT1QgTlVMTCBPUiB0X2lu Zm9tYXNrMiBJUyBOT1QgTlVMTDsNCg0KLS14bWF4IG9uIHRoZSBuZXcgdHVwbGUgaXMgMCBhcyBl eHBlY3RlZA0KIHRfeG1pbiB8IHRfeG1heCB8IHRfY3RpZCB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByYXdfZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29tYmluZWRf ZmxhZ3MNCi0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLQ0KICAgIDc1MSB8ICAgIDc1MiB8ICgwLDIpICB8IHtIRUFQX0hBU1ZBUldJRFRILEhFQVBf WE1JTl9DT01NSVRURUQsSEVBUF9IT1RfVVBEQVRFRH0gICAgICAgICAgIHwge30NCiAgICA3NTIg fCAgICAgIDAgfCAoMCwyKSAgfCB7SEVBUF9IQVNWQVJXSURUSCxIRUFQX1hNQVhfSU5WQUxJRCxI RUFQX1VQREFURUQsSEVBUF9PTkxZX1RVUExFfSB8IHt9DQooMiByb3dzKQ0KDQotLWNyZWF0ZSBh IGJlZm9yZSByb3cgdXBkYXRlIHRyaWdnZXIgb24gdF90ZXN0DQpDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBiZWZvcmVfdF90ZXN0KCkNClJFVFVSTlMgVFJJR0dFUiBBUyAkJA0KQkVHSU4NCiAg ICBSRVRVUk4gTkVXOw0KRU5EOw0KJCQgTEFOR1VBR0UgcGxwZ3NxbDsNCg0KQ1JFQVRFIFRSSUdH RVIgdHJfYmVmb3JlX3RfdGVzdF91cGRhdGUNCkJFRk9SRSBVUERBVEUgT04gdF90ZXN0DQpGT1Ig RUFDSCBST1cNCkVYRUNVVEUgRlVOQ1RJT04gYmVmb3JlX3RfdGVzdCgpOw0KDQotLXVwZGF0ZSB0 aGUgc2FtZSByb3cgYWdhaW4NCnVwZGF0ZSB0X3Rlc3Qgc2V0IGNvbnRlbnQ9J3Rlc3QyJyB3aGVy ZSBpZD0xOw0KDQotLXRoZSB4bWF4IGluIHRoZSBuZXcgdHVwbGUgaXMgZXF1YWwgdG8geG1pbg0K LS1hbmQgSEVBUF9YTUFYX0tFWVNIUl9MT0NLIGlzIHNldA0KIHRfeG1pbiB8IHRfeG1heCB8IHRf Y3RpZCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdfZmxhZ3Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29tYmluZWRfZmxhZ3MN Ci0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLQ0KICAgIDc1MSB8ICAgIDc1MiB8ICgwLDIpICB8IHtIRUFQ X0hBU1ZBUldJRFRILEhFQVBfWE1JTl9DT01NSVRURUQsSEVBUF9YTUFYX0NPTU1JVFRFRCxIRUFQ X0hPVF9VUERBVEVEfSAgICAgICAgICAgICAgIHwge30NCiAgICA3NTIgfCAgICA3NTUgfCAoMCwz KSAgfCB7SEVBUF9IQVNWQVJXSURUSCxIRUFQX1hNSU5fQ09NTUlUVEVELEhFQVBfVVBEQVRFRCxI RUFQX0hPVF9VUERBVEVELEhFQVBfT05MWV9UVVBMRX0gICAgICB8IHt9DQogICAgNzU1IHwgICAg NzU1IHwgKDAsMykgIHwge0hFQVBfSEFTVkFSV0lEVEgsSEVBUF9YTUFYX0tFWVNIUl9MT0NLLEhF QVBfWE1BWF9MT0NLX09OTFksSEVBUF9VUERBVEVELEhFQVBfT05MWV9UVVBMRX0gfCB7fQ0KKDMg cm93cykNCg0KLS11cGRhdGUgdGhlIHNhbWUgcm93IHdpdGggdHdvIHN1YnRyYW5zYWN0aW9ucw0K YmVnaW47DQpzYXZlcG9pbnQgc3AxOw0KdXBkYXRlIHRfdGVzdCBzZXQgY29udGVudD0ndGVzdDMn IHdoZXJlIGlkPTE7DQpzYXZlcG9pbnQgc3AyOw0KdXBkYXRlIHRfdGVzdCBzZXQgY29udGVudD0n dGVzdDQnIHdoZXJlIGlkPTE7DQpjb21taXQ7DQoNCi0tdHdvIG5ldyB0dXBsZXMgYXJlIGluc2Vy dGVkIHdpdGggeG1heCBzZXQgdG8gbXVsdGl4YWN0IGlkDQotLWFuZCBIRUFQX1hNQVhfRVhDTF9M T0NLIGlzIHNldA0KIHRfeG1pbiB8IHRfeG1heCB8IHRfY3RpZCB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19mbGFncyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbWJpbmVkX2Zs YWdzDQotLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tDQog ICAgNzUxIHwgICAgNzUyIHwgKDAsMikgIHwge0hFQVBfSEFTVkFSV0lEVEgsSEVBUF9YTUlOX0NP TU1JVFRFRCxIRUFQX1hNQVhfQ09NTUlUVEVELEhFQVBfSE9UX1VQREFURUR9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwge30NCiAgICA3NTIgfCAgICA3NTUgfCAo MCwzKSAgfCB7SEVBUF9IQVNWQVJXSURUSCxIRUFQX1hNSU5fQ09NTUlUVEVELEhFQVBfWE1BWF9D T01NSVRURUQsSEVBUF9VUERBVEVELEhFQVBfSE9UX1VQREFURUQsSEVBUF9PTkxZX1RVUExFfSAg ICAgICAgICAgICAgfCB7fQ0KICAgIDc1NSB8ICAgIDc1NyB8ICgwLDQpICB8IHtIRUFQX0hBU1ZB UldJRFRILEhFQVBfWE1JTl9DT01NSVRURUQsSEVBUF9VUERBVEVELEhFQVBfSE9UX1VQREFURUQs SEVBUF9PTkxZX1RVUExFfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHt9DQog ICAgNzU3IHwgICAgICA0IHwgKDAsNSkgIHwge0hFQVBfSEFTVkFSV0lEVEgsSEVBUF9DT01CT0NJ RCxIRUFQX1hNQVhfRVhDTF9MT0NLLEhFQVBfWE1BWF9JU19NVUxUSSxIRUFQX1VQREFURUQsSEVB UF9IT1RfVVBEQVRFRCxIRUFQX09OTFlfVFVQTEV9IHwge30NCiAgICA3NTggfCAgICAgIDMgfCAo MCw1KSAgfCB7SEVBUF9IQVNWQVJXSURUSCxIRUFQX1hNQVhfRVhDTF9MT0NLLEhFQVBfWE1BWF9M T0NLX09OTFksSEVBUF9YTUFYX0lTX01VTFRJLEhFQVBfVVBEQVRFRCxIRUFQX09OTFlfVFVQTEV9 ICAgICAgICAgICAgfCB7fQ0KKDUgcm93cyk= --0000000000007e20bd063bb19c44--