From: Robert Haas Date: Wed, 8 Jun 2011 02:12:44 +0000 (-0400) Subject: Complain politely about access temp/unlogged tables during recovery. X-Git-Tag: REL9_1_BETA2~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=16925c1e1fa236e4d7d6c8b571890e7c777f75d7;p=thirdparty%2Fpostgresql.git Complain politely about access temp/unlogged tables during recovery. This has never been supported, but we previously let md.c issue the complaint for us at whatever point we tried to examine the backing file. Now we print a nicer error message. Per bug #6041, reported by Emanuel, and extensive discussion with Tom Lane over where to put the check. --- diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index fd8ea45b4a7..b28681630b3 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -90,6 +90,12 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, */ relation = heap_open(relationObjectId, NoLock); + /* Temporary and unlogged relations are inaccessible during recovery. */ + if (!RelationNeedsWAL(relation) && RecoveryInProgress()) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot access temporary or unlogged relations during recovery"))); + rel->min_attr = FirstLowInvalidHeapAttributeNumber + 1; rel->max_attr = RelationGetNumberOfAttributes(relation); rel->reltablespace = RelationGetForm(relation)->reltablespace;