Dear Hou, Thanks for updating the patch! I can finally come back to the thread.
Regarding the max_retain_conflict_duration, I prefer GUC approach because it has already had a mechanism for converting unit: subscription option does not have it. Below part contains my comments: 01. check_new_cluster_subscription_configuration ``` @@ -2024,6 +2025,7 @@ check_new_cluster_subscription_configuration(void) PGresult *res; PGconn *conn; int max_active_replication_origins; + int max_replication_slots; ``` I feel max_replication_slots is needed when old_cluster.sub_retain_conflict_info is true. 02. check_old_cluster_for_valid_slots ``` + /* + * The name "pg_conflict_detection" (defined as + * CONFLICT_DETECTION_SLOT) has been reserved for logical + * replication conflict detection since PG18. + */ + if (GET_MAJOR_VERSION(new_cluster.major_version) >= 1800 && + strcmp(slot->slotname, "pg_conflict_detection") == 0) ``` IIUC, we can assume that the vesion of new_cluster is same as pg_upgrade, so no need to check the major version here. 03. Can we add a test for upgrading subscriber node with retain_conflict_info in 004_subscription? Best regards, Hayato Kuroda FUJITSU LIMITED