Re: Parser conflicts in extended GRANT statement

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Parser conflicts in extended GRANT statement
Дата
Msg-id 16980.1013819344@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Parser conflicts in extended GRANT statement  (Peter Eisentraut <peter_e@gmx.net>)
Список pgsql-hackers
Peter Eisentraut <peter_e@gmx.net> writes:
> Entertaining parser conflicts again.

I agree with sorting out the privileges lists later.

> Attempt 2:

> We set up

>     privileges = SELECT | UPDATE | ... | EXECUTE | ALL PRIVILEGES

>     grant_table = GRANT privileges ON tablename TO ...

>     grant_func = GRANT privileges ON FUNCTION funcname(...) TO ...

> This leads to a shift/reduce conflict at the state

>     GRANT privileges ON FUNCTION

> where FUNCTION could be a table name or introducing an actual function
> name.

The trick with this sort of problem is to make sure that the parser
doesn't have to reduce anything until it's seen enough tokens to make
the result unambiguous.  You are losing here because the parser has to
decide whether or not to reduce FUNCTION to tablename before it can
see any further than the TO.

I think it might work to do
grant := GRANT privileges ON grant_target TO ...
grant_target := tablename
        | FUNCTION funcname(...)
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Marc G. Fournier"
Дата:
Сообщение: Re: Ready to branch 7.2/7.3 ?
Следующее
От: Thomas Lockhart
Дата:
Сообщение: Re: Maintaining the list of release changes