Re: Using current_database() in a grant - Mailing list pgsql-general

From Tom Lane
Subject Re: Using current_database() in a grant
Date
Msg-id 13193.1035135421@sss.pgh.pa.us
Whole thread Raw
In response to Using current_database() in a grant  (Bruno Wolff III <bruno@wolff.to>)
List pgsql-general
Bruno Wolff III <bruno@wolff.to> writes:
> area=# grant create on database current_database() to bruno;
> ERROR:  parser: parse error at or near "(" at character 42

GRANT, like essentially all other utility statements, only allows
simple names and literal constants in its parameters.  I'm not
excited about trying to generalize that to arbitrary expressions
(or even just function calls), for a couple of reasons:

* probable syntax problems (shift/reduce conflicts), which could only be
resolved by turning lots more keywords into fully-reserved words.  The
syntax of the utility commands is pretty irregular and involves lots of
keywords that don't presently have to be reserved because they're not
keywords when used in or near expressions.  We'd lose that separation
if we allowed expressions in the utility commands.

* implementation problems and definitional problems in allowing
arbitrary user-defined code to run while a utility command is executed.


You can do what you want to do easily enough with a plpgsql function
containing an EXECUTE command, so I don't see the need to try to
implement it at a lower level ...

            regards, tom lane

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Problem granting usage on language c
Next
From: Hunter Hillegas
Date:
Subject: Buffers and MacOS X