@@ -1028,11 +1028,15 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
10281028 GetXLogFileName (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
10311032 if (reader_data -> honor_subdirs )
10321033 {
10331034 char archive_subdir [MAXPGPATH ];
10341035 get_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 ... */
10371041 snprintf (fullpath_gz , MAXPGPATH , "%s/%s.gz" , archive_subdir , xlogfname );
10381042
@@ -1069,6 +1073,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
10691073 /* use directory as-is */
10701074 else
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,
11301136 elog (LOG , "Thread [%d]: Opening WAL segment \"%s\"" ,
11311137 reader_data -> thread_num , reader_data -> xlogpath );
11321138
1133- reader_data -> xlogexists = true;
11341139 reader_data -> xlogfile = fio_open (reader_data -> xlogpath ,
11351140 O_RDONLY | PG_BINARY , FIO_LOCAL_HOST );
11361141
@@ -1141,6 +1146,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11411146 strerror (errno ));
11421147 return -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,
11491156 elog (LOG , "Thread [%d]: Opening compressed WAL segment \"%s\"" ,
11501157 reader_data -> thread_num , reader_data -> gz_xlogpath );
11511158
1152- reader_data -> xlogexists = true;
11531159 reader_data -> gz_xlogfile = fio_gzopen (reader_data -> gz_xlogpath ,
11541160 "rb" , -1 , FIO_LOCAL_HOST );
11551161 if (reader_data -> gz_xlogfile == NULL )
@@ -1159,6 +1165,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11591165 strerror (errno ));
11601166 return -1 ;
11611167 }
1168+ else
1169+ reader_data -> xlogexists = true;
11621170 }
11631171#endif
11641172 /* Exit without error if WAL segment doesn't exist */
0 commit comments