From 72335a20156b19be3a53ef686e0b31140c6f38e5 Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Sat, 9 Jun 2012 16:35:26 +0100 Subject: [PATCH] Add ERROR msg for GLOBAL/LOCAL TEMP is not yet implemented --- 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, 71 insertions(+), 6 deletions(-) diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 9eb1bed58e..107a805120 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -2507,15 +2507,43 @@ 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 accept both GLOBAL and LOCAL options; since we have no modules - * the LOCAL keyword is really meaningless. + * NOTE: we don't accept either the GLOBAL or LOCAL options: not yet implemented. */ OptTemp: TEMPORARY { $$ = RELPERSISTENCE_TEMP; } | TEMP { $$ = RELPERSISTENCE_TEMP; } - | LOCAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } - | LOCAL TEMP { $$ = RELPERSISTENCE_TEMP; } - | GLOBAL TEMPORARY { $$ = RELPERSISTENCE_TEMP; } - | GLOBAL 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; + } + | UNLOGGED { $$ = RELPERSISTENCE_UNLOGGED; } | /*EMPTY*/ { $$ = RELPERSISTENCE_PERMANENT; } ; @@ -8921,21 +8949,37 @@ 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 d20790f909..0b2cbc734a 100644 --- a/src/test/regress/expected/create_table.out +++ b/src/test/regress/expected/create_table.out @@ -220,3 +220,19 @@ 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 a050e8b6d1..ab0145531c 100644 --- a/src/test/regress/sql/create_table.sql +++ b/src/test/regress/sql/create_table.sql @@ -250,3 +250,8 @@ 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 -- 2.40.0