Dear Bharath, Thank you for reviewing!
> Thanks for the new patch. Here's a comment on v46: > > 1. > +Datum > +binary_upgrade_validate_wal_logical_end(PG_FUNCTION_ARGS > +{ oid => '8046', descr => 'for use by pg_upgrade', > + proname => 'binary_upgrade_validate_wal_logical_end', proisstrict => 'f', > + provolatile => 'v', proparallel => 'u', prorettype => 'bool', > + proargtypes => 'pg_lsn', > + prosrc => 'binary_upgrade_validate_wal_logical_end' }, > > I think this patch can avoid catalog changes by turning > binary_upgrade_validate_wal_logical_end a FRONTEND-only function > sitting in xlogreader.c after making InitXLogReaderState(), > ReadNextXLogRecord() FRONTEND-friendly (replace elog/ereport with > pg_fatal or such). With this change and back-porting of commit > e0b2eed0 to save logical slots at shutdown, the patch can help support > upgrading logical replication slots on PG versions < 17. Hmm, I think your suggestion may be questionable. If we implement the upgrading function as FRONTEND-only (I have not checked its feasibility), it means pg_upgrade uses the latest version WAL reader API to read WALs in old version cluster, which I didn't think is suggested. Each WAL page header has a magic number, XLOG_PAGE_MAGIC, which indicates the content of WAL. Sometimes the value has been changed due to the changes of WAL contents, and some functions requires that the magic number must be same as expected. E.g., startup process and pg_walinspect functions require that. Typically XLogReaderValidatePageHeader() ensures the equality. Now some functions are ported from pg_walinspect, so upgrading function requires same restriction. I think we should not ease the restriction to verify the completeness of files. Followings are the call stack of ported functions till XLogReaderValidatePageHeader(). ``` InitXLogReaderState() XLogFindNextRecord() ReadPageInternal() XLogReaderValidatePageHeader() ``` ``` ReadNextXLogRecord() XLogReadRecord() XLogReadAhead() XLogDecodeNextRecord() ReadPageInternal() XLogReaderValidatePageHeader() ``` Best Regards, Hayato Kuroda FUJITSU LIMITED