From 28ac7972873bd314d4837807396fe44571b5cb50 Mon Sep 17 00:00:00 2001
From: Simon Riggs <simon@2ndQuadrant.com>
Date: Sun, 10 Jun 2012 08:41:01 +0100
Subject: [PATCH] Revert error message on GLOBAL/LOCAL pending further
 discussion

---
 src/backend/parser/gram.y                  | 56 +++-------------------
 src/test/regress/expected/create_table.out | 16 -------
 src/test/regress/sql/create_table.sql      |  5 --
 3 files changed, 6 insertions(+), 71 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 107a8051205..9eb1bed58e6 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -2507,43 +2507,15 @@ CreateStmt:	CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')'
  * Redundancy here is needed to avoid shift/reduce conflicts,
  * since TEMP is not a reserved word.  See also OptTempTableName.
  *
- * NOTE: we don't accept either the GLOBAL or LOCAL options: not yet implemented.
+ * NOTE: we accept both GLOBAL and LOCAL options; since we have no modules
+ * the LOCAL keyword is really meaningless.
  */
 OptTemp:	TEMPORARY					{ $$ = RELPERSISTENCE_TEMP; }
 			| TEMP						{ $$ = RELPERSISTENCE_TEMP; }
-			| LOCAL TEMPORARY
-				{
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("LOCAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
-					$$ = RELPERSISTENCE_TEMP;
-				}
-			| LOCAL TEMP
-				{
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("LOCAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
-					$$ = RELPERSISTENCE_TEMP;
-				}
-			| GLOBAL TEMPORARY
-				{
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("GLOBAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
-					$$ = RELPERSISTENCE_TEMP;
-				}
-			| GLOBAL TEMP
-				{
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("GLOBAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
-					$$ = RELPERSISTENCE_TEMP;
-				}
-
+			| LOCAL TEMPORARY			{ $$ = RELPERSISTENCE_TEMP; }
+			| LOCAL TEMP				{ $$ = RELPERSISTENCE_TEMP; }
+			| GLOBAL TEMPORARY			{ $$ = RELPERSISTENCE_TEMP; }
+			| GLOBAL TEMP				{ $$ = RELPERSISTENCE_TEMP; }
 			| UNLOGGED					{ $$ = RELPERSISTENCE_UNLOGGED; }
 			| /*EMPTY*/					{ $$ = RELPERSISTENCE_PERMANENT; }
 		;
@@ -8949,37 +8921,21 @@ OptTempTableName:
 			| LOCAL TEMPORARY opt_table qualified_name
 				{
 					$$ = $4;
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("LOCAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
 					$$->relpersistence = RELPERSISTENCE_TEMP;
 				}
 			| LOCAL TEMP opt_table qualified_name
 				{
 					$$ = $4;
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("LOCAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
 					$$->relpersistence = RELPERSISTENCE_TEMP;
 				}
 			| GLOBAL TEMPORARY opt_table qualified_name
 				{
 					$$ = $4;
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("GLOBAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
 					$$->relpersistence = RELPERSISTENCE_TEMP;
 				}
 			| GLOBAL TEMP opt_table qualified_name
 				{
 					$$ = $4;
-					ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("GLOBAL TEMPORARY not yet implemented"),
-						 parser_errposition(@1)));
 					$$->relpersistence = RELPERSISTENCE_TEMP;
 				}
 			| UNLOGGED opt_table qualified_name
diff --git a/src/test/regress/expected/create_table.out b/src/test/regress/expected/create_table.out
index 0b2cbc734a8..d20790f9098 100644
--- a/src/test/regress/expected/create_table.out
+++ b/src/test/regress/expected/create_table.out
@@ -220,19 +220,3 @@ NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "doubly_temp_pkey
 CREATE TEMP TABLE public.temp_to_perm (a int primary key);		-- not OK
 ERROR:  cannot create temporary relation in non-temporary schema
 DROP TABLE unlogged1, public.unlogged2;
-CREATE GLOBAL TEMPORARY TABLE global_temp1 (a int, b text);		-- not yet OK
-ERROR:  GLOBAL TEMPORARY not yet implemented
-LINE 1: CREATE GLOBAL TEMPORARY TABLE global_temp1 (a int, b text);
-               ^
-CREATE GLOBAL TEMP TABLE global_temp2 (a int, b text);			-- not yet OK
-ERROR:  GLOBAL TEMPORARY not yet implemented
-LINE 1: CREATE GLOBAL TEMP TABLE global_temp2 (a int, b text);
-               ^
-CREATE LOCAL TEMP TABLE local_temp (a int, b text);				-- not yet OK
-ERROR:  LOCAL TEMPORARY not yet implemented
-LINE 1: CREATE LOCAL TEMP TABLE local_temp (a int, b text);
-               ^
-CREATE LOCAL TEMP TABLE local_temp (a int, b text);				-- not yet OK
-ERROR:  LOCAL TEMPORARY not yet implemented
-LINE 1: CREATE LOCAL TEMP TABLE local_temp (a int, b text);
-               ^
diff --git a/src/test/regress/sql/create_table.sql b/src/test/regress/sql/create_table.sql
index ab0145531cf..a050e8b6d1a 100644
--- a/src/test/regress/sql/create_table.sql
+++ b/src/test/regress/sql/create_table.sql
@@ -250,8 +250,3 @@ CREATE TEMP TABLE explicitly_temp (a int primary key);			-- also OK
 CREATE TEMP TABLE pg_temp.doubly_temp (a int primary key);		-- also OK
 CREATE TEMP TABLE public.temp_to_perm (a int primary key);		-- not OK
 DROP TABLE unlogged1, public.unlogged2;
-
-CREATE GLOBAL TEMPORARY TABLE global_temp1 (a int, b text);		-- not yet OK
-CREATE GLOBAL TEMP TABLE global_temp2 (a int, b text);			-- not yet OK
-CREATE LOCAL TEMP TABLE local_temp (a int, b text);				-- not yet OK
-CREATE LOCAL TEMP TABLE local_temp (a int, b text);				-- not yet OK
-- 
GitLab