Using MyDatabaseId in SET_LOCKTAG_APPLY_TRANSACTION
Maxim Orlov <orlovmg@gmail.com>
From: Maxim Orlov <orlovmg@gmail.com>
To: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-11-27T16:00:30Z
Lists: pgsql-hackers
Hi! While working on a patch to implement 64-bit transaction IDs in PostgreSQL, I ran into a small problem. The LockApplyTransactionForSession/UnlockApplyTransactionForSession functions utilize the SET_LOCKTAG_APPLY_TRANSACTION macro, which assumes XIDs are 32-bits. In my case, the transaction IDs are growing twice as large, and we don't have enough space to store them. I could simply resize the LOCKTAG structure, extending it by 32 bits, but this is not the best solution. However, I noticed that the MyDatabaseId field in SET_LOCKTAG_APPLY_TRANSACTION appears unnecessary. As far as I understand, the suboid should already uniquely identify the subscription. Is the MyDatabaseId field truly necessary? Will only the suboid suffice? I would be pleased to hear your thoughts on this. -- Best regards, Maxim Orlov.