adding stuff to parser, question - Mailing list pgsql-hackers
From | Grzegorz Jaskiewicz |
---|---|
Subject | adding stuff to parser, question |
Date | |
Msg-id | D4AFC2ED-4F96-43A3-A50D-71E843F65E4C@pointblue.com.pl Whole thread Raw |
Responses |
Re: adding stuff to parser, question
Re: adding stuff to parser, question Re: adding stuff to parser, question |
List | pgsql-hackers |
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. :)
pgsql-hackers by date: