BUG #2690: GRANT does not allow periods in database or schema names
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.
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.
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/
"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