Fix minor bug in XLogFileRead() that accidentally worked.
authorSimon Riggs
Wed, 8 Aug 2012 20:25:23 +0000 (21:25 +0100)
committerSimon Riggs
Wed, 8 Aug 2012 20:25:23 +0000 (21:25 +0100)
Cascading replication copied the incoming file into pg_xlog but
didn't set path correctly, so the first attempt to open file failed
causing it to loop around and look for file in pg_xlog. So the
earlier coding worked, but accidentally rather than by design.

Spotted by Fujii Masao, fix by Fujii Masao and Simon Riggs

src/backend/access/transam/xlog.c

index efd0347bc9bbd8f714ac07042114465416fccdf8..efda4634d560c046f27aa9dbfcd953f1409eee9a 100644 (file)
@@ -2805,6 +2805,11 @@ XLogFileRead(XLogSegNo segno, int emode, TimeLineID tli,
                     errmsg("could not rename file \"%s\" to \"%s\": %m",
                            path, xlogfpath)));
 
+       /*
+        * Set path to point at the new file in pg_xlog.
+        */
+       strncpy(path, xlogfpath, MAXPGPATH);
+
        /*
         * If the existing segment was replaced, since walsenders might have
         * it open, request them to reload a currently-open segment.