gpt4 book ai didi

postgresql - 是否有可能在 postgreSQL 逻辑复制插件中获取当前的 64 位 transactionId(带有纪元)

转载 作者:行者123 更新时间:2023-11-29 13:09:38 35 4
gpt4 key购买 nike

我正在构建一个 Change Capture 系统,该系统通过逻辑解码输出插件使用 Postgres WAL。

在回调中很容易访问当前的 transactionId ( https://doxygen.postgresql.org/structReorderBufferTXN.html#ad3ff4a8f320f2ec21e3e07688d29c741 ) 但这是 32 位的,可以在 4B 提交后回绕,因此它作为逻辑计数器并不可靠。

Postgres 内部维护一个 64 位的 transactionID,它不会环绕(select txid_current()): https://www.postgresql.org/docs/9.4/functions-info.html#FUNCTIONS-TXID-SNAPSHOT

https://github.com/postgres/postgres/blob/3412030205211079f9b0510e2244083e4ee7b15a/src/backend/access/transam/xact.c#L473-L488

是否可以从逻辑解码插件访问此 ID?如果不是,原因是什么?

谢谢

最佳答案

你有两个选择:

  1. 您使用 OidFunctionCall0 调用 SQL 函数 txid_current()

  2. src/backend/utils/adt/txid .c.

第二个选项会更快,但你必须复制代码。

关于postgresql - 是否有可能在 postgreSQL 逻辑复制插件中获取当前的 64 位 transactionId(带有纪元),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56692581/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com