Re: Parser conflicts in extended GRANT statement - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Parser conflicts in extended GRANT statement
Date
Msg-id 16980.1013819344@sss.pgh.pa.us
Whole thread Raw
In response to Parser conflicts in extended GRANT statement  (Peter Eisentraut <peter_e@gmx.net>)
List 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 by date:

Previous
From: "Marc G. Fournier"
Date:
Subject: Re: Ready to branch 7.2/7.3 ?
Next
From: Thomas Lockhart
Date:
Subject: Re: Maintaining the list of release changes