Dear Amit, > Shouldn't such a check be present in the CheckSlotPermissions() kind > of function to perform it in the central place?
OK. I checked whether we can reuse pre-existing functions, but it seems not appropriate. CheckSlotPermissions() is called even by pg_drop_replication_slot(), and CheckSlotRequirements() is not called by pg_sync_replication_slots(). I defined new function CheckSlotIsInSingleUserMode() and put the check there. I removed function name from the ereport(), but I feel it is enough - CheckSlotPermissions() and CheckSlotRequirements() do not have. > > For now, functions for replication origin and replication messages were > retained. > > I can handle them after the discussion. > > > > Which other functions do we see similar restrictions? I checked > "sequence manipulation functions" (1), and "Transaction ID and > Snapshot Information Functions" (2) but couldn't see similar > restrictions. > > (1) - https://www.postgresql.org/docs/current/functions-sequence.html > (2) - > https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INF > O-SNAPSHOT I grepped sources and could not find explicit limitations neither. So...this might be overkill. But I still think the restriction is OK for the slot - no need to do some efforts for accepting single-user mode, just close the cover. Best regards, Hayato Kuroda FUJITSU LIMITED
v4-0001-Prohibit-slot-operations-while-in-the-single-user.patch
Description: v4-0001-Prohibit-slot-operations-while-in-the-single-user.patch