Hey folks,

I am trying to add "GRANT SELECT ON ALL TABLES" to postgres, as it has been quite few times now - where I had to write a procedure for that. I kind of looked around, and more or less know how to approach it. But I am stuck on parser :), yes - parser.

Can someone walk me through adding new rules to parser ?
so far I have this:

Index: parser/gram.y
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.656
diff -u -r2.656 gram.y
--- parser/gram.y       22 Jan 2009 20:16:05 -0000      2.656
+++ parser/gram.y       31 Jan 2009 16:44:57 -0000
@@ -494,7 +494,7 @@
STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING SUPERUSER_P
        SYMMETRIC SYSID SYSTEM_P

-       TABLE TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP
+ TABLE TABLES TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP
        TO TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P
        TRUNCATE TRUSTED TYPE_P

@@ -4301,6 +4301,13 @@
                                        n->objs = $2;
                                        $$ = n;
                                }
+                       | ALL TABLES
+                               {
+                                       PrivTarget *n = (PrivTarget *) 
palloc(sizeof(PrivTarget));
+                                       n->objtype = ACL_OBJECT_RELATION;
+                                       n->objs = NULL;
+                                       $$ = n;
+                               }
                        | SEQUENCE qualified_name_list
                                {
                                        PrivTarget *n = (PrivTarget *) 
palloc(sizeof(PrivTarget));
Index: parser/keywords.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/keywords.c,v
retrieving revision 1.209
diff -u -r1.209 keywords.c
--- parser/keywords.c   1 Jan 2009 17:23:45 -0000       1.209
+++ parser/keywords.c   31 Jan 2009 16:44:57 -0000
@@ -373,6 +373,7 @@
        {"sysid", SYSID, UNRESERVED_KEYWORD},
        {"system", SYSTEM_P, UNRESERVED_KEYWORD},
        {"table", TABLE, RESERVED_KEYWORD},
+       {"table", TABLES, RESERVED_KEYWORD},
        {"tablespace", TABLESPACE, UNRESERVED_KEYWORD},
        {"temp", TEMP, UNRESERVED_KEYWORD},
        {"template", TEMPLATE, UNRESERVED_KEYWORD},




But that seems to be not nearly enough, for psql to recognize "GRANT SELECT ON ALL TABLES TO foo". Please help me out, with stuff I am missing here. I never had any expierence with bison, or any other lexical parsers for that matter.

Thanks. :)


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to