*** 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
Optionally, GLOBAL or LOCAL
can be written before TEMPORARY> or TEMP>.
! This makes no difference in PostgreSQL>, but see
.
--- 163,170 ----
Optionally, GLOBAL or LOCAL
can be written before TEMPORARY> or TEMP>.
! This presently makes no difference in PostgreSQL>
! and is deprecated; see
.
***************
*** 1310,1316 **** CREATE TABLE employees OF employee_type (
PostgreSQL does not have.
For compatibility's sake, PostgreSQL will
accept the GLOBAL and LOCAL keywords
! in a temporary table declaration, but they have no effect.
--- 1311,1318 ----
PostgreSQL does not have.
For compatibility's sake, PostgreSQL will
accept the GLOBAL and LOCAL keywords
! in a temporary table declaration, but they have no effect. This usage is
! deprecated and may specify standard-compliant behavior in the future.
*** a/src/backend/parser/gram.y
--- b/src/backend/parser/gram.y
***************
*** 2512,2521 **** CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')'
*/
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; }
;
--- 2512,2549 ----
*/
OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; }
| TEMP { $$ = RELPERSISTENCE_TEMP; }
! | LOCAL TEMPORARY
! {
! ereport(WARNING,
! (errmsg("LOCAL is deprecated in temporary table creation"),
! errdetail("This may specify different semantics in future versions of PostgreSQL."),
! parser_errposition(@1)));
! $$ = RELPERSISTENCE_TEMP;
! }
! | LOCAL TEMP
! {
! ereport(WARNING,
! (errmsg("LOCAL is deprecated in temporary table creation"),
! errdetail("This may specify different semantics in future versions of PostgreSQL."),
! parser_errposition(@1)));
! $$ = RELPERSISTENCE_TEMP;
! }
! | GLOBAL TEMPORARY
! {
! ereport(WARNING,
! (errmsg("GLOBAL is deprecated in temporary table creation"),
! errdetail("This may specify different semantics in future versions of PostgreSQL."),
! parser_errposition(@1)));
! $$ = RELPERSISTENCE_TEMP;
! }
! | GLOBAL TEMP
! {
! ereport(WARNING,
! (errmsg("GLOBAL is deprecated in temporary table creation"),
! errdetail("This may specify different semantics in future versions of PostgreSQL."),
! parser_errposition(@1)));
! $$ = RELPERSISTENCE_TEMP;
! }
| UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; }
| /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; }
;
***************
*** 8920,8940 **** OptTempTableName:
--- 8948,8984 ----
}
| LOCAL TEMPORARY opt_table qualified_name
{
+ ereport(WARNING,
+ (errmsg("LOCAL is deprecated in temporary table creation"),
+ errdetail("This may specify different semantics in future versions of PostgreSQL."),
+ parser_errposition(@1)));
$$ = $4;
$$->relpersistence = RELPERSISTENCE_TEMP;
}
| LOCAL TEMP opt_table qualified_name
{
+ ereport(WARNING,
+ (errmsg("LOCAL is deprecated in temporary table creation"),
+ errdetail("This may specify different semantics in future versions of PostgreSQL."),
+ parser_errposition(@1)));
$$ = $4;
$$->relpersistence = RELPERSISTENCE_TEMP;
}
| GLOBAL TEMPORARY opt_table qualified_name
{
+ ereport(WARNING,
+ (errmsg("GLOBAL is deprecated in temporary table creation"),
+ errdetail("This may specify different semantics in future versions of PostgreSQL."),
+ parser_errposition(@1)));
$$ = $4;
$$->relpersistence = RELPERSISTENCE_TEMP;
}
| GLOBAL TEMP opt_table qualified_name
{
+ ereport(WARNING,
+ (errmsg("GLOBAL is deprecated in temporary table creation"),
+ errdetail("This may specify different semantics in future versions of PostgreSQL."),
+ parser_errposition(@1)));
$$ = $4;
$$->relpersistence = RELPERSISTENCE_TEMP;
}