Petr Jelinek wrote:
> Bruce Momjian wrote:
>
> >I removed your use of the pg_auth flat file. By the time you have the
> >PROC entry to do your lookups, you might as well just use the system
> >cache.
> >
> >There is a race condition in the code because we set our PROC entry
> >before we check for other entries. If there is one connection left and
> >two backends do this at the same time, they would both fail, while one
> >should fail and the other succeed. Without a lock, I see no way to avoid
> >it so I just commented it in the code.
> >
> >
> Yeah my working version was doing this too but I wanted to avoid lock on
> PROC array and that race condition and because pg_auth is loaded anyway
> I used it.
Well, we are locking the PROC array for the db scan as well, so I don't
see a difference for user. Also, I don't see how it would avoid the
race condition. We could scan PROC and then set our user value, but
that would allow possibly too many connections rather than too few.
> >Also, I felt that zero should mean allow no/zero connections, rather
> >than representing unlimited connections. I used -1 for unlimited. We
> >can either document the use of -1, or add syntax to allow NO CONNECTION
> >LIMIT, or something like that.
> >
> >
> Right, maybe we could remove datallowconn from pg_database (in future)
> if we can achieve same thing using datconnlimit = 0 ?
Yes, we certainly could, but I am betting we would need both because if
someone wanted to close down a database, _but_ keep the existing limit
so it could be resetored later, they would still use datallowconn.
> >The patch requires a catalog version update when applied.
> >
> >
> Yes, thanks for your work on this patch, I will write documentation for
> it in next few days.
Thanks.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073