BUG #1485: upper case user names / creatuser

Started by Hannes Ervenabout 21 years ago2 messagesbugs
Jump to latest
#1Hannes Erven
h.e@gmx.at

The following bug has been logged online:

Bug reference: 1485
Logged by: Hannes Erven
Email address: h.e@gmx.at
PostgreSQL version: 7.4.7
Operating system: 2.6.10-gentoo-r6
Description: upper case user names / creatuser
Details:

I tried creating a new user the way mentioned in the Docs, but (postgres
owning user removed from the output):

$ createuser
Enter name of user to add: Hannes
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
CREATE USER

$ psql template1
Welcome to psql 7.4.7, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit

template1=# alter user Hannes password '***';
ERROR: user "hannes" does not exist

template1=# select * from pg_catalog.pg_user
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd |
valuntil | useconfig
----------+----------+-------------+----------+-----------+----------+------
----+-----------
Hannes | 100 | f | f | f | ******** |
|
(2 rows)

I then created another user, 'hannes', with createuser, and then I was able
to alter the passwords, altough I now had two users in pg_user: hannes and
Hannes.

template1=# drop user Hannes ;
DROP USER
template1=# select * from pg_user ;
Hannes | 100 | f | f | f | ******** |
|

template1=# drop user Hannes ;
ERROR: user "hannes" does not exist

I had expected either createuser create a 'hannes' or the alter/drop user
commands to respect case in user names.

with best regards,
-hannes

#2Richard Huxton
dev@archonet.com
In reply to: Hannes Erven (#1)
Re: BUG #1485: upper case user names / creatuser

Hannes Erven wrote:

The following bug has been logged online:

Bug reference: 1485
Logged by: Hannes Erven
Email address: h.e@gmx.at
PostgreSQL version: 7.4.7
Operating system: 2.6.10-gentoo-r6
Description: upper case user names / creatuser
Details:

template1=# alter user Hannes password '***';
ERROR: user "hannes" does not exist

I then created another user, 'hannes', with createuser, and then I was able
to alter the passwords, altough I now had two users in pg_user: hannes and
Hannes.

The rules for SQL are: unquoted names get folded to lower case,
double-quoted names are left alone. The error message shows this - it
says "hannes" doesn't exist.

You could argue that the command-line tools should fold to lower-case
too, but that's not standard behaviour for command-line tools.

So - all you need to do is issue SQL like:
ALTER USER "Hannes" ...

Personally, I keep all objects and users lower-case only, it makes my
life easier.
--
Richard Huxton
Archonet Ltd