On Tue, 28 Jan 2003, Tom Lane wrote:
> I wrote:
> > Michiel Lange <michiel@minas.demon.nl> writes:
> >> It is, somehow, not possible to connect as a user which name is completely
> >> numeric.
>
> > I muttered "nonsense!" to myself, but darned if you're not right:
>
> > regression=# create user "12345";
> > CREATE USER
> > regression=# \q
> > $ psql -U 12345 regression
> > psql: FATAL: SET SESSION AUTHORIZATION: permission denied
>
> > Will look into it.
>
> After some looking, it appears the culprit is
> assign_session_authorization() in commands/variable.c, which is assuming
> that a numeric-looking parameter string should be taken as a numeric
> user sysid, rather than an actual user name.
>
> The reason this was done was to avoid the need to do catalog lookups
> when restoring a prior setting during error recovery. That's still a
> valid concern, so right offhand I don't see an easy fix. Any ideas?
How about throwing an error if an all digit user name is given to create
user as already alluded to?
Seems that would be simple, not that I know anything about the parser, but does
that break any standards?
--
Nigel J. Andrews