]> granicus.if.org Git - postgresql/commitdiff
Per Tatsuo's recommendation, change mdopen so that it won't
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 5 Sep 1999 23:24:53 +0000 (23:24 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 5 Sep 1999 23:24:53 +0000 (23:24 +0000)
automatically create the file, except during bootstrap mode where that
seems to be necessary.

src/backend/storage/smgr/md.c

index 2b10060729f304c13939c4c964187bc01903dc00..304dc786f2955ccfdc791f77d07aaf0093b31cf6 100644 (file)
@@ -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)