aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2012-06-09 16:35:26 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2012-06-09 16:35:26 +0100
commit72335a20156b19be3a53ef686e0b31140c6f38e5 (patch)
tree67673c25e638eebe6a3c3cbff8f25621aefc9613 /src
parent37255705399b57b2e413814799f0bc9b94fda14a (diff)
downloadpostgresql-72335a20156b19be3a53ef686e0b31140c6f38e5.tar.gz
postgresql-72335a20156b19be3a53ef686e0b31140c6f38e5.zip
Add ERROR msg for GLOBAL/LOCAL TEMP is not yet implemented
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/gram.y56
-rw-r--r--src/test/regress/expected/create_table.out16
-rw-r--r--src/test/regress/sql/create_table.sql5
3 files changed, 71 insertions, 6 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 9eb1bed58e6..107a8051205 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 d20790f9098..0b2cbc734a8 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 a050e8b6d1a..ab0145531cf 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