From f70f8948019d2f92d9e7521a27a9078d170a1767 Mon Sep 17 00:00:00 2001
From: reshke kirill <reshke@double.cloud>
Date: Mon, 9 Dec 2024 11:49:01 +0000
Subject: [PATCH v1] Lock tuple for inplace update when moidfying

---
 src/backend/commands/alter.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index a45f3bb6b83..19258ed5ac2 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -991,6 +991,8 @@ AlterObjectOwner_internal(Oid classId, Oid objectId, Oid new_ownerId)
 			}
 		}
 
+		LockTuple(rel, &oldtup->t_self, InplaceUpdateTupleLock);
+
 		/* Build a modified tuple */
 		nattrs = RelationGetNumberOfAttributes(rel);
 		values = palloc0(nattrs * sizeof(Datum));
@@ -1024,6 +1026,8 @@ AlterObjectOwner_internal(Oid classId, Oid objectId, Oid new_ownerId)
 		/* Perform actual update */
 		CatalogTupleUpdate(rel, &newtup->t_self, newtup);
 
+		UnlockTuple(rel, &oldtup->t_self, InplaceUpdateTupleLock);
+
 		/* Update owner dependency reference */
 		changeDependencyOnOwner(classId, objectId, new_ownerId);
 
-- 
2.34.1

