@@ -1028,11 +1028,15 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
10281028GetXLogFileName (xlogfname ,reader_data -> tli ,reader_data -> xlogsegno ,wal_seg_size );
10291029
10301030/* obtain WAL archive subdir for ARCHIVE backup */
1031+ // TODO: move to separate function and rewrite it
10311032if (reader_data -> honor_subdirs )
10321033{
10331034char archive_subdir [MAXPGPATH ];
10341035get_archive_subdir (archive_subdir ,wal_archivedir ,xlogfname ,SEGMENT );
10351036
1037+ /* default value for xlogpath for error message */
1038+ snprintf (reader_data -> xlogpath ,MAXPGPATH ,"%s/%s" ,archive_subdir ,xlogfname );
1039+
10361040/* check existence of wal_dir/xlogid/segment.gz file ... */
10371041snprintf (fullpath_gz ,MAXPGPATH ,"%s/%s.gz" ,archive_subdir ,xlogfname );
10381042
@@ -1069,6 +1073,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
10691073/* use directory as-is */
10701074else
10711075{
1076+ /* default value for xlogpath for error message */
1077+ snprintf (reader_data -> xlogpath ,MAXPGPATH ,"%s/%s" ,wal_archivedir ,xlogfname );
10721078archive_dir :
10731079#ifdef HAVE_LIBZ
10741080/* ... failing that check existence of wal_dir/segment.gz ... */
@@ -1130,7 +1136,6 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11301136elog (LOG ,"Thread [%d]: Opening WAL segment \"%s\"" ,
11311137reader_data -> thread_num ,reader_data -> xlogpath );
11321138
1133- reader_data -> xlogexists = true;
11341139reader_data -> xlogfile = fio_open (reader_data -> xlogpath ,
11351140O_RDONLY |PG_BINARY ,FIO_LOCAL_HOST );
11361141
@@ -1141,6 +1146,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11411146strerror (errno ));
11421147return -1 ;
11431148}
1149+ else
1150+ reader_data -> xlogexists = true;
11441151}
11451152#ifdef HAVE_LIBZ
11461153/* Try to open compressed WAL segment */
@@ -1149,7 +1156,6 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11491156elog (LOG ,"Thread [%d]: Opening compressed WAL segment \"%s\"" ,
11501157reader_data -> thread_num ,reader_data -> gz_xlogpath );
11511158
1152- reader_data -> xlogexists = true;
11531159reader_data -> gz_xlogfile = fio_gzopen (reader_data -> gz_xlogpath ,
11541160"rb" ,-1 ,FIO_LOCAL_HOST );
11551161if (reader_data -> gz_xlogfile == NULL )
@@ -1159,6 +1165,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11591165strerror (errno ));
11601166return -1 ;
11611167}
1168+ else
1169+ reader_data -> xlogexists = true;
11621170}
11631171#endif
11641172/* Exit without error if WAL segment doesn't exist */