aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2001-04-02 23:30:04 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2001-04-02 23:30:04 +0000
commit503c80d2a0da77686c2549c37a4b0033c5f4a95a (patch)
treee2abae773b9854c57792ab7ccbc9a5855bba5504 /src/backend/utils
parent244fd47124890625d2b3284cb4836bab90d38bde (diff)
downloadpostgresql-503c80d2a0da77686c2549c37a4b0033c5f4a95a.tar.gz
postgresql-503c80d2a0da77686c2549c37a4b0033c5f4a95a.zip
Restore pre-7.1 behavior of allowing DROP of a table whose underlying
physical file has disappeared. There is no really good reason why relcache should be opening the underlying file at all, AFAICS. In any case we needn't raise a hard error here.
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/cache/relcache.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index a92f65add5d..352f52e9208 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.130 2001/03/23 04:49:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.131 2001/04/02 23:30:04 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1125,12 +1125,21 @@ RelationBuildDesc(RelationBuildDescInfo buildinfo,
relation->rd_node.relNode = relation->rd_rel->relfilenode;
/*
- * open the relation and assign the file descriptor returned by the
+ * Open the relation and assign the file descriptor returned by the
* storage manager code to rd_fd.
*
+ * We do not raise a hard error if we fail to open the relation at this
+ * point. If we did, it would be impossible to drop a relation whose
+ * underlying physical file had disappeared.
*/
if (relation->rd_rel->relkind != RELKIND_VIEW)
- relation->rd_fd = smgropen(DEFAULT_SMGR, relation, false);
+ {
+ relation->rd_fd = smgropen(DEFAULT_SMGR, relation, true);
+ Assert(relation->rd_fd >= -1);
+ if (relation->rd_fd == -1)
+ elog(NOTICE, "RelationBuildDesc: can't open %s: %m",
+ RelationGetRelationName(relation));
+ }
else
relation->rd_fd = -1;