Dear hackers, > > So basically, while scanning from confirmed_flush we must ensure that > > we find a first record as SHUTDOWN CHECKPOINT record at the same LSN, > > and after that, we should not get any other WAL other than like you > > said shutdown checkpoint, running_xacts. That way we will ensure both > > aspect that the confirmed flush LSN is at the shutdown checkpoint and > > after that there is no real activity in the system. > > > > Right. > > > I think to me, > > this seems like the best available option so far. > > > > Yeah, let's see if someone else has a different opinion or has a better idea.
Based on the recent discussion, I made a prototype which reads all WAL records and verifies their type. A new upgrade function binary_upgrade_validate_wal_record_types_after_lsn() does that. This function reads WALs from start_lsn (confirmed_flush), and returns true if they can ignore. The type of ignored records are listed in [1]. Kindly Hou found that XLOG_HEAP2_PRUNE may be generated during the pg_upgrade --check, so it was added to acceptable type. [1]: https://www.postgresql.org/message-id/tyapr01mb58660273eacefc5bf256b133f5...@tyapr01mb5866.jpnprd01.prod.outlook.com Best Regards, Hayato Kuroda FUJITSU LIMITED
v37-0001-pg_upgrade-Allow-to-replicate-logical-replicatio.patch
Description: v37-0001-pg_upgrade-Allow-to-replicate-logical-replicatio.patch
v37-0002-Reads-all-WAL-records-ahead-confirmed_flush_lsn.patch
Description: v37-0002-Reads-all-WAL-records-ahead-confirmed_flush_lsn.patch