mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Add new GUC reserved_connections.
This provides a way to reserve connection slots for non-superusers. The slots reserved via the new GUC are available only to users who have the new predefined role pg_use_reserved_connections. superuser_reserved_connections remains as a final reserve in case reserved_connections has been exhausted. Patch by Nathan Bossart. Reviewed by Tushar Ahuja and by me. Discussion: http://postgr.es/m/20230119194601.GA4105788@nathanxps13
This commit is contained in:
@@ -645,27 +645,33 @@ GetStartupBufferPinWaitBufId(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether there are at least N free PGPROC objects.
|
||||
* Check whether there are at least N free PGPROC objects. If false is
|
||||
* returned, *nfree will be set to the number of free PGPROC objects.
|
||||
* Otherwise, *nfree will be set to n.
|
||||
*
|
||||
* Note: this is designed on the assumption that N will generally be small.
|
||||
*/
|
||||
bool
|
||||
HaveNFreeProcs(int n)
|
||||
HaveNFreeProcs(int n, int *nfree)
|
||||
{
|
||||
dlist_iter iter;
|
||||
|
||||
Assert(n > 0);
|
||||
Assert(nfree);
|
||||
|
||||
SpinLockAcquire(ProcStructLock);
|
||||
|
||||
*nfree = 0;
|
||||
dlist_foreach(iter, &ProcGlobal->freeProcs)
|
||||
{
|
||||
n--;
|
||||
if (n == 0)
|
||||
(*nfree)++;
|
||||
if (*nfree == n)
|
||||
break;
|
||||
}
|
||||
|
||||
SpinLockRelease(ProcStructLock);
|
||||
|
||||
return (n <= 0);
|
||||
return (*nfree == n);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user