*** 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; }