diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index 2b10060729..304dc786f2 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.52 1999/09/02 02:57:49 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.53 1999/09/05 23:24:53 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -284,13 +284,23 @@ mdopen(Relation reln) fd = FileNameOpenFile(path, O_RDWR | O_BINARY, 0600); #endif - /* this should only happen during bootstrap processing */ if (fd < 0) + { + /* in bootstrap mode, accept mdopen as substitute for mdcreate */ + if (IsBootstrapProcessingMode()) + { #ifndef __CYGWIN32__ - fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL, 0600); + fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL, 0600); #else - fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600); + fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600); #endif + } + if (fd < 0) + { + elog(ERROR, "mdopen: couldn't open %s: %m", path); + return -1; + } + } vfd = _fdvec_alloc(); if (vfd < 0)