Subject: Fix misleading references to columns in GRANT/REVOKE summaries

From: David Fetter <[email-masked]>
Date: Fri, 6 Apr 2007 16:46:03 -0700

Folks,

Per a question Alexey Parshin asked in the IRC channel, I'm attaching
a patch to the GRANT and REVOKE syntax summaries which replaces the
misleading word "column" with "parameter."  "Column" is misleading
because it could be read to imply a column-level GRANT/REVOKE, which
we don't have yet.

Cheers,
D
-- 
David Fetter <[email-masked]> http://fetter.org/
phone: +1 415 235 3778        AIM: dfetter666
                              Skype: davidfetter

Remember to vote!
Consider donating to PostgreSQL: http://www.postgresql.org/about/donate
Index: doc/src/sgml/ref/grant.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/grant.sgml,v
retrieving revision 1.64
diff -c -r1.64 grant.sgml
*** doc/src/sgml/ref/grant.sgml	1 Feb 2007 00:28:19 -0000	1.64
--- doc/src/sgml/ref/grant.sgml	6 Apr 2007 23:39:20 -0000
***************
*** 525,531 ****
  
  <synopsis>
  GRANT <replaceable class="PARAMETER">privileges</replaceable>
!     ON <replaceable class="PARAMETER">table</replaceable> [ ( <replaceable class="PARAMETER">column</replaceable> [, ...] ) ] [, ...]
      TO { PUBLIC | <replaceable class="PARAMETER">username</replaceable> [, ...] } [ WITH GRANT OPTION ]
  </synopsis>
     </para>
--- 525,532 ----
  
  <synopsis>
  GRANT <replaceable class="PARAMETER">privileges</replaceable>
!     ON <replaceable class="PARAMETER">table</replaceable> [ (
! <replaceable class="PARAMETER">parameter</replaceable> [, ...] ) ] [, ...]
      TO { PUBLIC | <replaceable class="PARAMETER">username</replaceable> [, ...] } [ WITH GRANT OPTION ]
  </synopsis>
     </para>
Index: doc/src/sgml/ref/revoke.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/revoke.sgml,v
retrieving revision 1.42
diff -c -r1.42 revoke.sgml
*** doc/src/sgml/ref/revoke.sgml	31 Jan 2007 23:26:04 -0000	1.42
--- doc/src/sgml/ref/revoke.sgml	6 Apr 2007 23:39:20 -0000
***************
*** 235,241 ****
  
  <synopsis>
  REVOKE [ GRANT OPTION FOR ] <replaceable class="PARAMETER">privileges</replaceable>
!     ON <replaceable class="parameter">object</replaceable> [ ( <replaceable class="parameter">column</replaceable> [, ...] ) ]
      FROM { PUBLIC | <replaceable class="parameter">username</replaceable> [, ...] }
      { RESTRICT | CASCADE }
  </synopsis>
--- 235,242 ----
  
  <synopsis>
  REVOKE [ GRANT OPTION FOR ] <replaceable class="PARAMETER">privileges</replaceable>
!     ON <replaceable class="parameter">object</replaceable> [ (
! <replaceable class="parameter">parameter</replaceable> [, ...] ) ]
      FROM { PUBLIC | <replaceable class="parameter">username</replaceable> [, ...] }
      { RESTRICT | CASCADE }
  </synopsis>

---

From: Tom Lane <[email-masked]>
Date: Fri, 06 Apr 2007 21:06:00 -0400

> because it could be read to imply a column-level GRANT/REVOKE, which

Apparently it's so misleading that you didn't understand it either.
The entire *point* of that paragraph is that we don't have the
feature.  This proposed change is surely not an improvement...

			regards, tom lane

---

From: Russell Smith <[email-masked]>
Date: Sat, 07 Apr 2007 11:53:15 +1000

> feature.  This proposed change is surely not an improvement...
Maybe removing the entire example would be more helpful.  I don't find 
it clear to have a command outline in a compatibility block.
> 			regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>        choose an index scan if your joining column's datatypes do not
>        match
>
>

---

From: Tom Lane <[email-masked]>
Date: Fri, 06 Apr 2007 22:24:57 -0400

> it clear to have a command outline in a compatibility block.

True, there doesn't seem to be any point in providing a full syntax
summary rather than just saying "the SQL spec says you can grant
privileges on columns but we don't support that yet".

			regards, tom lane

---

From: Bruce Momjian <[email-masked]>
Date: Fri, 6 Apr 2007 23:49:04 -0400 (EDT)

> privileges on columns but we don't support that yet".

Agreed.  Patch attached and applied.  I don't see any other cases of
this in our documentation.

-- 
  Bruce Momjian  <[email-masked]>          http://momjian.us
  EnterpriseDB                               http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/ref/grant.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/grant.sgml,v
retrieving revision 1.64
diff -c -c -r1.64 grant.sgml
*** doc/src/sgml/ref/grant.sgml	1 Feb 2007 00:28:19 -0000	1.64
--- doc/src/sgml/ref/grant.sgml	7 Apr 2007 03:45:36 -0000
***************
*** 520,533 ****
     </para>
  
     <para>
!     The SQL standard allows setting privileges for individual columns
!     within a table:
! 
! <synopsis>
! GRANT <replaceable class="PARAMETER">privileges</replaceable>
!     ON <replaceable class="PARAMETER">table</replaceable> [ ( <replaceable class="PARAMETER">column</replaceable> [, ...] ) ] [, ...]
!     TO { PUBLIC | <replaceable class="PARAMETER">username</replaceable> [, ...] } [ WITH GRANT OPTION ]
! </synopsis>
     </para>
  
     <para>
--- 520,527 ----
     </para>
  
     <para>
!     <productname>PostgreSQL</productname> does not support the SQL-standard 
!     functionality of setting privileges for individual columns.
     </para>
  
     <para>
Index: doc/src/sgml/ref/revoke.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/revoke.sgml,v
retrieving revision 1.42
diff -c -c -r1.42 revoke.sgml
*** doc/src/sgml/ref/revoke.sgml	31 Jan 2007 23:26:04 -0000	1.42
--- doc/src/sgml/ref/revoke.sgml	7 Apr 2007 03:45:37 -0000
***************
*** 231,245 ****
  
     <para>
      The compatibility notes of the <xref linkend="sql-grant" endterm="sql-grant-title"> command
!     apply analogously to <command>REVOKE</command>.  The syntax summary is:
! 
! <synopsis>
! REVOKE [ GRANT OPTION FOR ] <replaceable class="PARAMETER">privileges</replaceable>
!     ON <replaceable class="parameter">object</replaceable> [ ( <replaceable class="parameter">column</replaceable> [, ...] ) ]
!     FROM { PUBLIC | <replaceable class="parameter">username</replaceable> [, ...] }
!     { RESTRICT | CASCADE }
! </synopsis>
!     One of <literal>RESTRICT</literal> or <literal>CASCADE</literal>
      is required according to the standard, but <productname>PostgreSQL</>
      assumes <literal>RESTRICT</literal> by default.
     </para>
--- 231,238 ----
  
     <para>
      The compatibility notes of the <xref linkend="sql-grant" endterm="sql-grant-title"> command
!     apply analogously to <command>REVOKE</command>.
!     <literal>RESTRICT</literal> or <literal>CASCADE</literal>
      is required according to the standard, but <productname>PostgreSQL</>
      assumes <literal>RESTRICT</literal> by default.
     </para>

---

From: Peter Eisentraut <[email-masked]>
Date: Sun, 8 Apr 2007 21:34:53 +0200

> privileges on columns but we don't support that yet".

I think it's pretty useful if people see a command of this form from 
some other implementation and don't know what it means.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/

---

From: Peter Eisentraut <[email-masked]>
Date: Sun, 8 Apr 2007 21:36:38 +0200

> this in our documentation.

That doesn't mean this one isn't useful.  Please revert this.

---

From: Bruce Momjian <[email-masked]>
Date: Sun, 8 Apr 2007 21:46:21 -0400 (EDT)

> That doesn't mean this one isn't useful.  Please revert this.

Well, Tom and I thought it caused confusion, as did the person reporting
the confusion.  You saying to revert it isn't enough.

---

From: Tom Lane <[email-masked]>
Date: Sun, 08 Apr 2007 22:28:23 -0400

> the confusion.  You saying to revert it isn't enough.

A possible compromise is to describe or show the syntax in some informal
form, so that it didn't look like one of the <synopsis> sections we use
for supported syntax.  I'm not sure what that would look like exactly,
but I do see merit in both sides of this discussion...

			regards, tom lane

---

From: Bruce Momjian <[email-masked]>
Date: Sun, 8 Apr 2007 22:52:30 -0400 (EDT)

> but I do see merit in both sides of this discussion...

I am all for us describing how we don't match the SQL spec, but just
showing the syntax doesn't seem to help people understand how we don't
match the spec, does it?  Are there more details to column-level GRANT
except saying we don't support it?