Обсуждение: BUG #2690: GRANT does not allow periods in database or schema names

Поиск
Список
Период
Сортировка

BUG #2690: GRANT does not allow periods in database or schema names

От
"Nick Johnson"
Дата:
The following bug has been logged online:

Bug reference:      2690
Logged by:          Nick Johnson
Email address:      pgsql@spatula.net
PostgreSQL version: 8.1.1
Operating system:   FreeBSD 6.1
Description:        GRANT does not allow periods in database or schema names
Details:

Though you can create a database with a period in the name (e.g.,
"example.com"), you cannot issue a GRANT on that database name from the
command line.

pgsql=# GRANT ALL ON DATABASE example.com TO someuser;
ERROR:  syntax error at or near "." at character 30
LINE 1: GRANT ALL ON DATABASE example.com TO someuser;

The same syntax works okay for databases without a period in the name.

Either GRANT should work on any database name that works when creating a
database, or CREATE should disallow the same things that GRANT disallows.

Re: BUG #2690: GRANT does not allow periods in database or schema names

От
Alvaro Herrera
Дата:
Nick Johnson wrote:
>
> The following bug has been logged online:
>
> Bug reference:      2690
> Logged by:          Nick Johnson
> Email address:      pgsql@spatula.net
> PostgreSQL version: 8.1.1
> Operating system:   FreeBSD 6.1
> Description:        GRANT does not allow periods in database or schema names
> Details:
>
> Though you can create a database with a period in the name (e.g.,
> "example.com"), you cannot issue a GRANT on that database name from the
> command line.

Sure you can.  Just quote the name:

GRANT ALL ON DATABASE "example.com" TO someuser;

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

Re: BUG #2690: GRANT does not allow periods in database or schema names

От
Peter Eisentraut
Дата:
Nick Johnson wrote:
> Though you can create a database with a period in the name (e.g.,
> "example.com"), you cannot issue a GRANT on that database name from
> the command line.
>
> pgsql=# GRANT ALL ON DATABASE example.com TO someuser;
> ERROR:  syntax error at or near "." at character 30

You are making the faulty assumption that example.com and "example.com"
are the same thing.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

Re: BUG #2690: GRANT does not allow periods in database or schema names

От
Tom Lane
Дата:
"Nick Johnson" <pgsql@spatula.net> writes:
> Though you can create a database with a period in the name (e.g.,
> "example.com"), you cannot issue a GRANT on that database name from the
> command line.

You need some double quotes:
http://www.postgresql.org/docs/8.1/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS

This is by no means unique to GRANT, nor to database names.

            regards, tom lane