Per database connection limit buglet
It's possible to set a per-database connection limit of < -1, which seems bogus:
gator:~ dpage$ /usr/local/pgsql84/bin/psql -p 5433 postgres
psql (8.4devel)
Type "help" for help.
postgres=# create database test with connection limit = -999;
CREATE DATABASE
postgres=# select datname, datconnlimit from pg_database;
datname | datconnlimit
-----------+--------------
template1 | -1
template0 | -1
postgres | 50
foo | 45
test | -999
(5 rows)
8.3 seems similarly afflicted - I haven't tested any further back.
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
Dave Page wrote:
It's possible to set a per-database connection limit of < -1, which seems bogus:
Yeah. That's simple to fix, but I'm having trouble wordsmithing the
error message. This is what I came up with:
invalid connection limit %d (must be -1, meaning no limit, or greater)
Any better suggestions?
I also note that you can set it to INT_MAX, while max_connections is
limited to INT_MAX/4, but I'm inclined to leave that alone.
8.3 seems similarly afflicted - I haven't tested any further back.
Hmm, I don't think this should be backported, since it doesn't cause any
actual problems. We'd just risk breaking people's scripts that use
-999 to mean "no limit". (they will be broken when they upgrade to 8.4
anyway, of course, but that's fine)
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
On Mon, Jan 26, 2009 at 12:26 PM, Heikki Linnakangas
<heikki.linnakangas@enterprisedb.com> wrote:
Dave Page wrote:
It's possible to set a per-database connection limit of < -1, which seems
bogus:Yeah. That's simple to fix, but I'm having trouble wordsmithing the error
message. This is what I came up with:invalid connection limit %d (must be -1, meaning no limit, or greater)
Any better suggestions?
Perhaps drop the 'meaning no limit'? Less helpful perhaps (but that's
what the manual is for), but it sounds better
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Mon, Jan 26, 2009 at 02:26:05PM +0200, Heikki Linnakangas wrote:
Dave Page wrote:
It's possible to set a per-database connection limit of < -1, which seems
bogus:Yeah. That's simple to fix, but I'm having trouble wordsmithing the error
message. This is what I came up with:invalid connection limit %d (must be -1, meaning no limit, or greater)
Any better suggestions?
Maybe
invalid connection limit %d (must be positive or -1, for "unlimited")
Regards
- -- tomás
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD4DBQFJfbYXBcgs9XrR2kYRApUkAJ9V/aYLn37zyDeS7dqTwZqgLfqoVgCYokPR
52vaXe/OrDwdKFlN4vElSQ==
=XS2a
-----END PGP SIGNATURE-----
tomas@tuxteam.de wrote:
On Mon, Jan 26, 2009 at 02:26:05PM +0200, Heikki Linnakangas wrote:
Dave Page wrote:
It's possible to set a per-database connection limit of < -1, which seems
bogus:Yeah. That's simple to fix, but I'm having trouble wordsmithing the error
message. This is what I came up with:invalid connection limit %d (must be -1, meaning no limit, or greater)
Any better suggestions?
Maybe
invalid connection limit %d (must be positive or -1, for "unlimited")
Hmm, that sounds better, but it can also be 0.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Mon, Jan 26, 2009 at 03:16:37PM +0200, Heikki Linnakangas wrote:
[...]
Maybe
invalid connection limit %d (must be positive or -1, for "unlimited")Hmm, that sounds better, but it can also be 0.
Oops. "nonnegative", then. Creeping unreadability, again?
Regards
- -- tomás
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFJfcmLBcgs9XrR2kYRAtQRAKCCG5Zn6mKfzFJyRPeanH80t0a7HgCeL5r8
rzthpyajTrBYEppMnZFPeC4=
=NqZ9
-----END PGP SIGNATURE-----
Heikki Linnakangas wrote:
Dave Page wrote:
It's possible to set a per-database connection limit of < -1, which seems bogus:
Yeah. That's simple to fix, but I'm having trouble wordsmithing the
error message. This is what I came up with:invalid connection limit %d (must be -1, meaning no limit, or greater)
Split it up:
errmsg("invalid connection limit %d"),
errdetail("Limit must be a non-negative number, or -1 for no limit.")
or maybe
errdetail("Valid values are -1 for no limit, or a non-negative number.")
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
Dave Page wrote:
It's possible to set a per-database connection limit of < -1, which seems bogus:
Yeah. That's simple to fix, but I'm having trouble wordsmithing the
error message. This is what I came up with:
Why does it need to be anything except GUC's standard "invalid value"
message? I really don't believe that this case is worth making
translators deal with an additional string.
regards, tom lane
Tom Lane wrote:
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
Dave Page wrote:
It's possible to set a per-database connection limit of < -1, which seems bogus:
Yeah. That's simple to fix, but I'm having trouble wordsmithing the
error message. This is what I came up with:Why does it need to be anything except GUC's standard "invalid value"
message? I really don't believe that this case is worth making
translators deal with an additional string.
I guess. The message in guc.c seems a bit cumbersome, though, so I did
create a new message for it. It's now simply "invalid connection limit: %d".
The check was missing from per-user connection limits, fixed that too.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com