On Wed, Jun 13, 2012 at 02:56:58PM -0400, Tom Lane wrote:
> Noah Misch <n...@leadboat.com> writes:
> > Given that, how about warning on GLOBAL only but having the documentation
> > equally discourage use of both?
> 
> Yeah, that's about what I was thinking, too.
> 
> Any thoughts on the wording of the WARNING message?

My patch used "GLOBAL is deprecated in temporary table creation", which still
seems fine to me.  Here's an update based on this discussion.
*** a/doc/src/sgml/ref/create_table.sgml
--- b/doc/src/sgml/ref/create_table.sgml
***************
*** 163,169 **** CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] 
TABLE [ IF NOT EXI
       <para>
        Optionally, <literal>GLOBAL</literal> or <literal>LOCAL</literal>
        can be written before <literal>TEMPORARY</> or <literal>TEMP</>.
!       This makes no difference in <productname>PostgreSQL</>, but see
        <xref linkend="sql-createtable-compatibility"
        endterm="sql-createtable-compatibility-title">.
       </para>
--- 163,170 ----
       <para>
        Optionally, <literal>GLOBAL</literal> or <literal>LOCAL</literal>
        can be written before <literal>TEMPORARY</> or <literal>TEMP</>.
!       This presently makes no difference in <productname>PostgreSQL</>
!       and is deprecated; see
        <xref linkend="sql-createtable-compatibility"
        endterm="sql-createtable-compatibility-title">.
       </para>
***************
*** 1310,1316 **** CREATE TABLE employees OF employee_type (
      <productname>PostgreSQL</productname> does not have.
      For compatibility's sake, <productname>PostgreSQL</productname> will
      accept the <literal>GLOBAL</literal> and <literal>LOCAL</literal> keywords
!     in a temporary table declaration, but they have no effect.
     </para>
  
     <para>
--- 1311,1318 ----
      <productname>PostgreSQL</productname> does not have.
      For compatibility's sake, <productname>PostgreSQL</productname> will
      accept the <literal>GLOBAL</literal> and <literal>LOCAL</literal> keywords
!     in a temporary table declaration, but they have no effect.  Use in new
!     applications is discouraged.
     </para>
  
     <para>
*** a/src/backend/parser/gram.y
--- b/src/backend/parser/gram.y
***************
*** 2514,2521 **** OptTemp:     TEMPORARY                                       
{ $$ = RELPERSISTENCE_TEMP; }
                        | TEMP                                          { $$ = 
RELPERSISTENCE_TEMP; }
                        | LOCAL TEMPORARY                       { $$ = 
RELPERSISTENCE_TEMP; }
                        | LOCAL TEMP                            { $$ = 
RELPERSISTENCE_TEMP; }
!                       | GLOBAL TEMPORARY                      { $$ = 
RELPERSISTENCE_TEMP; }
!                       | GLOBAL TEMP                           { $$ = 
RELPERSISTENCE_TEMP; }
                        | UNLOGGED                                      { $$ = 
RELPERSISTENCE_UNLOGGED; }
                        | /*EMPTY*/                                     { $$ = 
RELPERSISTENCE_PERMANENT; }
                ;
--- 2514,2533 ----
                        | TEMP                                          { $$ = 
RELPERSISTENCE_TEMP; }
                        | LOCAL TEMPORARY                       { $$ = 
RELPERSISTENCE_TEMP; }
                        | LOCAL TEMP                            { $$ = 
RELPERSISTENCE_TEMP; }
!                       | GLOBAL TEMPORARY
!                               {
!                                       ereport(WARNING,
!                                                       (errmsg("GLOBAL is 
deprecated in temporary table creation"),
!                                                        
parser_errposition(@1)));
!                                       $$ = RELPERSISTENCE_TEMP;
!                               }
!                       | GLOBAL TEMP
!                               {
!                                       ereport(WARNING,
!                                                       (errmsg("GLOBAL is 
deprecated in temporary table creation"),
!                                                        
parser_errposition(@1)));
!                                       $$ = RELPERSISTENCE_TEMP;
!                               }
                        | UNLOGGED                                      { $$ = 
RELPERSISTENCE_UNLOGGED; }
                        | /*EMPTY*/                                     { $$ = 
RELPERSISTENCE_PERMANENT; }
                ;
***************
*** 8930,8940 **** OptTempTableName:
--- 8942,8958 ----
                                }
                        | GLOBAL TEMPORARY opt_table qualified_name
                                {
+                                       ereport(WARNING,
+                                                       (errmsg("GLOBAL is 
deprecated in temporary table creation"),
+                                                        
parser_errposition(@1)));
                                        $$ = $4;
                                        $$->relpersistence = 
RELPERSISTENCE_TEMP;
                                }
                        | GLOBAL TEMP opt_table qualified_name
                                {
+                                       ereport(WARNING,
+                                                       (errmsg("GLOBAL is 
deprecated in temporary table creation"),
+                                                        
parser_errposition(@1)));
                                        $$ = $4;
                                        $$->relpersistence = 
RELPERSISTENCE_TEMP;
                                }
-- 
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