PostgreSQL 文档中提供的有关该函数的信息。
pg_replication_slot_advance (slot_name name, upto_lsn pg_lsn) → record (slot_name name, end_lsn pg_lsn)
推进名为 slot_name 的复制槽的当前确认位置。插槽不会向后移动,也不会移动到当前插入位置之外。返回插槽的名称和它前进到的实际位置。如果进行了任何推进,更新的插槽位置信息将在下一个检查点写出。因此,如果发生崩溃,插槽可能会返回到较早的位置。
解释一下上面几行到底提到了什么?
https://github.com/postgres/postgres/blob/REL_15_3/src/backend/replication/slotfuncs.c#L451
对于逻辑复制槽,此函数启动逻辑解码并跳过指定 LSN 之前的任何更改。
confirmed_flush
该插槽的位置将设置为函数返回的值。restart_lsn
如果可能的话,也会向前推进。对于物理复制槽,此函数更新
restart_lsn
.