Re: [HACKERS] Inconsistent syntax in GRANT

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [HACKERS] Inconsistent syntax in GRANT
Дата
Msg-id 200601051820.k05IK6u26518@candle.pha.pa.us
обсуждение исходный текст
Ответы Re: [HACKERS] Inconsistent syntax in GRANT
Re: [HACKERS] Inconsistent syntax in GRANT
Список pgsql-patches
Josh Berkus wrote:
> Folks,
>
> Just got tripped up by this:
>
> GRANT SELECT ON table1 TO someuser;
> GRANT SELECT ON table1_id_seq TO someuser;
> .... both work
>
> However,
> GRANT SELECT ON TABLE table1 TO someuser;
> ... works, while ....
> GRANT SELECT ON SEQUENCE table1_id_seq TO someuser;
> ... raises an error.
>
> This is inconsistent.   Do people agree with me that the parser should
> accept "SEQUENCE" there, since the optional object name works for all
> other objects?  Is there some technical reason this is difficult to do?

The following patch allows VIEW and SEQUENCE for GRANT.  I didn't add
checks for relkind, figuring it wasn't worth it, right?

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/ref/grant.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/grant.sgml,v
retrieving revision 1.50
diff -c -c -r1.50 grant.sgml
*** doc/src/sgml/ref/grant.sgml    20 Oct 2005 19:18:01 -0000    1.50
--- doc/src/sgml/ref/grant.sgml    5 Jan 2006 18:18:37 -0000
***************
*** 22,28 ****
  <synopsis>
  GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
      [,...] | ALL [ PRIVILEGES ] }
!     ON [ TABLE ] <replaceable class="PARAMETER">tablename</replaceable> [, ...]
      TO { <replaceable class="PARAMETER">username</replaceable> | GROUP <replaceable
class="PARAMETER">groupname</replaceable>| PUBLIC } [, ...] [ WITH GRANT OPTION ] 

  GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
--- 22,28 ----
  <synopsis>
  GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
      [,...] | ALL [ PRIVILEGES ] }
!     ON [ TABLE | VIEW | SEQUENCE ] <replaceable class="PARAMETER">tablename</replaceable> [, ...]
      TO { <replaceable class="PARAMETER">username</replaceable> | GROUP <replaceable
class="PARAMETER">groupname</replaceable>| PUBLIC } [, ...] [ WITH GRANT OPTION ] 

  GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
Index: src/backend/parser/gram.y
===================================================================
RCS file: /cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.521
diff -c -c -r2.521 gram.y
*** src/backend/parser/gram.y    29 Dec 2005 04:53:18 -0000    2.521
--- src/backend/parser/gram.y    5 Jan 2006 18:18:41 -0000
***************
*** 3315,3320 ****
--- 3315,3321 ----
                      n->objs = $1;
                      $$ = n;
                  }
+             /* The next three are processed identically. */
              | TABLE qualified_name_list
                  {
                      PrivTarget *n = makeNode(PrivTarget);
***************
*** 3322,3327 ****
--- 3323,3342 ----
                      n->objs = $2;
                      $$ = n;
                  }
+             | VIEW qualified_name_list
+                 {
+                     PrivTarget *n = makeNode(PrivTarget);
+                     n->objtype = ACL_OBJECT_RELATION;
+                     n->objs = $2;
+                     $$ = n;
+                 }
+             | SEQUENCE qualified_name_list
+                 {
+                     PrivTarget *n = makeNode(PrivTarget);
+                     n->objtype = ACL_OBJECT_RELATION;
+                     n->objs = $2;
+                     $$ = n;
+                 }
              | FUNCTION function_with_argtypes_list
                  {
                      PrivTarget *n = makeNode(PrivTarget);

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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [BUGS] Solaris cc compiler on amd: PostgreSQL does not have native
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] Inconsistent syntax in GRANT