diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml index 30f20bf51e42a5e8d488e249f985d1902e3ae71d..fd01cd3cce62515d9fa2be8253eca695827afbae 100644 --- a/doc/src/sgml/features.sgml +++ b/doc/src/sgml/features.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.12 2002/12/14 00:24:23 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.13 2003/01/10 11:02:41 petere Exp $ --> <appendix id="features"> @@ -740,6 +740,12 @@ $Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.12 2002/12/14 00:24:23 pe <entry>DROP VIEW statement: RESTRICT clause</entry> <entry></entry> </row> + <row> + <entry>F031-19</entry> + <entry>Core</entry> + <entry>REVOKE statement: RESTRICT clause</entry> + <entry></entry> + </row> <row> <entry>F032</entry> <entry></entry> @@ -1629,12 +1635,6 @@ $Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.12 2002/12/14 00:24:23 pe <entry>Module language</entry> <entry></entry> </row> - <row> - <entry>F031-19</entry> - <entry>Core</entry> - <entry>REVOKE statement: RESTRICT clause</entry> - <entry></entry> - </row> <row> <entry>F034</entry> <entry></entry> diff --git a/doc/src/sgml/ref/revoke.sgml b/doc/src/sgml/ref/revoke.sgml index 2b8334d3ee908b9d4610c135ee0e75186a486767..345024bb7cc42f5d61dbbbcd04818f3f9c7e4864 100644 --- a/doc/src/sgml/ref/revoke.sgml +++ b/doc/src/sgml/ref/revoke.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/revoke.sgml,v 1.23 2002/11/21 23:34:43 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/revoke.sgml,v 1.24 2003/01/10 11:02:51 petere Exp $ PostgreSQL documentation --> @@ -20,22 +20,27 @@ REVOKE { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ] <replaceable class="PARAMETER">tablename</replaceable> [, ...] FROM { <replaceable class="PARAMETER">username</replaceable> | GROUP <replaceable class="PARAMETER">groupname</replaceable> | PUBLIC } [, ...] + [ RESTRICT ] REVOKE { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE <replaceable>dbname</replaceable> [, ...] FROM { <replaceable class="PARAMETER">username</replaceable> | GROUP <replaceable class="PARAMETER">groupname</replaceable> | PUBLIC } [, ...] + [ RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTION <replaceable>funcname</replaceable> ([<replaceable>type</replaceable>, ...]) [, ...] FROM { <replaceable class="PARAMETER">username</replaceable> | GROUP <replaceable class="PARAMETER">groupname</replaceable> | PUBLIC } [, ...] + [ RESTRICT ] REVOKE { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE <replaceable>langname</replaceable> [, ...] FROM { <replaceable class="PARAMETER">username</replaceable> | GROUP <replaceable class="PARAMETER">groupname</replaceable> | PUBLIC } [, ...] + [ RESTRICT ] REVOKE { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA <replaceable>schemaname</replaceable> [, ...] FROM { <replaceable class="PARAMETER">username</replaceable> | GROUP <replaceable class="PARAMETER">groupname</replaceable> | PUBLIC } [, ...] + [ RESTRICT ] </synopsis> </refsynopsisdiv> @@ -63,6 +68,11 @@ REVOKE { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } See the description of the <xref linkend="sql-grant" endterm="sql-grant-title"> command for the meaning of the privilege types. </para> + + <para> + The <literal>RESTRICT</literal> key word is currently only noise. + See also the compatibility notes below. + </para> </refsect1> <refsect1 id="SQL-REVOKE-notes"> diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 7626fe0e449888a4c39dc5b9ecba179cdd58851a..bfb1e427fb43d0957479fa1815c255bce089bcd0 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.392 2003/01/09 20:50:51 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.393 2003/01/10 11:02:51 petere Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -2751,7 +2751,7 @@ GrantStmt: GRANT privileges ON privilege_target TO grantee_list ; RevokeStmt: REVOKE opt_revoke_grant_option privileges ON privilege_target - FROM grantee_list + FROM grantee_list opt_drop_behavior { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; @@ -2759,6 +2759,10 @@ RevokeStmt: REVOKE opt_revoke_grant_option privileges ON privilege_target n->objtype = ($5)->objtype; n->objects = ($5)->objs; n->grantees = $7; + + if ($8 == DROP_CASCADE) + elog(ERROR, "REVOKE ... CASCADE is not implemented"); + $$ = (Node *)n; } ;