Hi PostgreSQL developers! I'm comaintainer of the Debian package of postgresql (CC to its maintainer) and just fixed the bug report below (see http://bugs.debian.org/224716 for the whole thread):
----- Forwarded message from simon raven <[EMAIL PROTECTED]> -----
Subject: Bug#224716: postgresql-client: createuser fails
Reply-To: simon raven <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
From: simon raven <[EMAIL PROTECTED]>
To: Debian Bug Tracking System <[EMAIL PROTECTED]>
Date: Sun, 21 Dec 2003 13:17:01 +0000
X-Spam-Status: No, hits=-4.9 required=3.0 tests=BAYES_00 autolearn=ham
version=2.61
Package: postgresql-client
Version: 7.3.4-9
Severity: important
Tags: sid
(#:~)- createuser -E -U postgres -W nagios
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
Password:
ERROR: parser: parse error at or near "NOCREATEDB" at character 61
createuser: creation of user "nagios" failed
it fails if i include the -E (encrypt password) option, otherwise it
works as expected, if i do not include the -E option.
----- End forwarded message -----
The problem is that createuser.c builds a wrong SQL string if just the
'-E' option without '-P' is given. This results in an SQL string like
CREATE USER ... ENCRYPTED NOCREATEDB
although it should read '... ENCRYPTED PASSWORD 'blabla' NOCREATEDB'
The attached patch fixes this by just ignoring -E when -P is not
given. The patch should work against your current CVS; it is already
included in the Debian package CVS.
Thanks and have a nice day!
Martin
--
Martin Pitt Debian GNU/Linux Developer
[EMAIL PROTECTED] [EMAIL PROTECTED]
http://www.piware.de http://www.debian.org
diff -ruN postgresql-7.4.1-old/src/bin/scripts/createuser.c
postgresql-7.4.1/src/bin/scripts/createuser.c
--- postgresql-7.4.1-old/src/bin/scripts/createuser.c 2003-08-04 02:43:29.000000000
+0200
+++ postgresql-7.4.1/src/bin/scripts/createuser.c 2004-01-05 23:27:54.000000000
+0100
@@ -189,12 +189,12 @@
printfPQExpBuffer(&sql, "CREATE USER %s", fmtId(newuser));
if (sysid)
appendPQExpBuffer(&sql, " SYSID %s", sysid);
- if (encrypted == +1)
- appendPQExpBuffer(&sql, " ENCRYPTED");
- if (encrypted == -1)
- appendPQExpBuffer(&sql, " UNENCRYPTED");
if (newpassword)
{
+ if (encrypted == +1)
+ appendPQExpBuffer(&sql, " ENCRYPTED");
+ if (encrypted == -1)
+ appendPQExpBuffer(&sql, " UNENCRYPTED");
appendPQExpBuffer(&sql, " PASSWORD ");
appendStringLiteral(&sql, newpassword, false);
}
signature.asc
Description: Digital signature
