Dept. of second thoughts: it'd be a good idea to flush buffers
authorTom Lane
Mon, 30 Aug 2004 03:50:24 +0000 (03:50 +0000)
committerTom Lane
Mon, 30 Aug 2004 03:50:24 +0000 (03:50 +0000)
during replay of CREATE DATABASE as well as the first time around.
Else it's possible that the copy operation will copy obsolete blocks.
We are still a long way from guaranteeing anything about using a
recently-written database as a CREATE template, but this seems needed
to ensure the existing behavior holds up during replay.

src/backend/commands/dbcommands.c

index 38696cf7070dbb83c7834fb99d490e8f3c7238f4..1c9425789aa0d8a575ba0a8556b3633a44a508d0 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.143 2004/08/30 02:54:38 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.144 2004/08/30 03:50:24 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1136,6 +1136,13 @@ dbase_redo(XLogRecPtr lsn, XLogRecord *record)
                            dst_path)));
        }
 
+       /*
+        * Force dirty buffers out to disk, to ensure source database is
+        * up-to-date for the copy.  (We really only need to flush buffers for
+        * the source database...)
+        */
+       BufferSync(-1, -1);
+
 #ifndef WIN32
 
        /*