diff -crN '--exclude=.git' server-5.0.0/src/gausskernel/storage/access/transam/xlog.cpp server-5.0.0-edit/src/gausskernel/storage/access/transam/xlog.cpp *** server-5.0.0/src/gausskernel/storage/access/transam/xlog.cpp 2025-06-24 17:12:01.544870117 +0800 --- server-5.0.0-edit/src/gausskernel/storage/access/transam/xlog.cpp 2025-06-24 17:40:27.153052932 +0800 *************** *** 9811,9820 **** --- 9811,9822 ---- t_thrd.xact_cxt.ShmemVariableCache->recentGlobalXmin = InvalidTransactionId; /* Read oldest xid having undo from checkpoint and set in proc global. */ if (t_thrd.proc->workingVersionNum >= INPLACE_UPDATE_VERSION_NUM) { + pg_atomic_write_u64(&g_instance.undo_cxt.globalFrozenXid, checkPointUndo.globalRecycleXid); pg_atomic_write_u64(&g_instance.undo_cxt.globalRecycleXid, checkPointUndo.globalRecycleXid); ereport(LOG, (errmsg("Startup: write global globalRecycleXid %lu from checkpoint %lu", g_instance.undo_cxt.globalRecycleXid, checkPointUndo.globalRecycleXid))); } else { + pg_atomic_write_u64(&g_instance.undo_cxt.globalFrozenXid, InvalidTransactionId); pg_atomic_write_u64(&g_instance.undo_cxt.globalRecycleXid, InvalidTransactionId); } *************** *** 13658,13665 **** --- 13660,13669 ---- securec_check(rc, "", ""); checkPoint = checkPointUndo.ori_checkpoint; if (t_thrd.proc->workingVersionNum >= INPLACE_UPDATE_VERSION_NUM) { + pg_atomic_write_u64(&g_instance.undo_cxt.globalFrozenXid, checkPointUndo.globalRecycleXid); pg_atomic_write_u64(&g_instance.undo_cxt.globalRecycleXid, checkPointUndo.globalRecycleXid); } else { + pg_atomic_write_u64(&g_instance.undo_cxt.globalFrozenXid, InvalidTransactionId); pg_atomic_write_u64(&g_instance.undo_cxt.globalRecycleXid, InvalidTransactionId); } if (TransactionIdPrecedes(t_thrd.xact_cxt.ShmemVariableCache->recentGlobalXmin, *************** *** 13784,13791 **** --- 13788,13797 ---- securec_check(rc, "", ""); checkPoint = checkPointUndo.ori_checkpoint; if (t_thrd.proc->workingVersionNum >= INPLACE_UPDATE_VERSION_NUM) { + pg_atomic_write_u64(&g_instance.undo_cxt.globalFrozenXid, checkPointUndo.globalRecycleXid); pg_atomic_write_u64(&g_instance.undo_cxt.globalRecycleXid, checkPointUndo.globalRecycleXid); } else { + pg_atomic_write_u64(&g_instance.undo_cxt.globalFrozenXid, InvalidTransactionId); pg_atomic_write_u64(&g_instance.undo_cxt.globalRecycleXid, InvalidTransactionId); } if (TransactionIdPrecedes(t_thrd.xact_cxt.ShmemVariableCache->recentGlobalXmin,