Unbreak unlogged tables.

I broke this in commit 5da79169d3, which
was obviously insufficiently well tested.  Add some regression tests
in the hope of making future slip-ups more likely to be noticed.
This commit is contained in:
Robert Haas 2011-07-22 16:15:43 -04:00
parent 43aa40e155
commit 6f1be5a67a
3 changed files with 25 additions and 3 deletions

View File

@ -506,9 +506,10 @@ RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid)
errmsg("cannot create relations in temporary schemas of other sessions")));
break;
default:
ereport(ERROR,
(errcode(ERRCODE_INVALID_TABLE_DEFINITION),
errmsg("only temporary relations may be created in temporary schemas")));
if (isAnyTempNamespace(nspid))
ereport(ERROR,
(errcode(ERRCODE_INVALID_TABLE_DEFINITION),
errmsg("only temporary relations may be created in temporary schemas")));
}
}

View File

@ -204,3 +204,14 @@ CREATE TABLE IF NOT EXISTS test_tsvector(
t text
);
NOTICE: relation "test_tsvector" already exists, skipping
CREATE UNLOGGED TABLE unlogged1 (a int); -- OK
INSERT INTO unlogged1 VALUES (42);
CREATE UNLOGGED TABLE public.unlogged2 (a int); -- also OK
CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int); -- not OK
ERROR: only temporary relations may be created in temporary schemas
CREATE TABLE pg_temp.implicity_temp (a int); -- OK
CREATE TEMP TABLE explicitly_temp (a int); -- also OK
CREATE TEMP TABLE pg_temp.doubly_temp (a int); -- also OK
CREATE TEMP TABLE public.temp_to_perm (a int); -- not OK
ERROR: cannot create temporary relation in non-temporary schema
DROP TABLE unlogged1, public.unlogged2;

View File

@ -240,3 +240,13 @@ CREATE TABLE IF NOT EXISTS test_tsvector(
CREATE TABLE IF NOT EXISTS test_tsvector(
t text
);
CREATE UNLOGGED TABLE unlogged1 (a int); -- OK
INSERT INTO unlogged1 VALUES (42);
CREATE UNLOGGED TABLE public.unlogged2 (a int); -- also OK
CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int); -- not OK
CREATE TABLE pg_temp.implicity_temp (a int); -- OK
CREATE TEMP TABLE explicitly_temp (a int); -- also OK
CREATE TEMP TABLE pg_temp.doubly_temp (a int); -- also OK
CREATE TEMP TABLE public.temp_to_perm (a int); -- not OK
DROP TABLE unlogged1, public.unlogged2;