From ceb31561709b4517f7c405eefc5af65a7a27c34e Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Tue, 6 Oct 2026 13:16:54 -0700 Subject: [PATCH 1/2] fix: use pg_walfile_name() to extract timeline on primary --- pgdog/src/backend/pool/lsn_monitor.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/pgdog/src/backend/pool/lsn_monitor.rs b/pgdog/src/backend/pool/lsn_monitor.rs index 6b50f1794..c2a36eca8 100644 --- a/pgdog/src/backend/pool/lsn_monitor.rs +++ b/pgdog/src/backend/pool/lsn_monitor.rs @@ -49,17 +49,31 @@ SELECT ELSE now() END AS timestamp, - (pg_control_checkpoint()).timeline_id AS timeline + CASE + WHEN replica THEN + (pg_control_checkpoint()).timeline_id + ELSE + ('x' || substr(pg_walfile_name(lsn), 1, 8))::bit(32)::int + END AS timeline FROM wal "; static AURORA_LSN_QUERY: &str = " +WITH wal AS MATERIALIZED ( + SELECT pg_is_in_recovery() AS replica, '0/0'::pg_lsn AS lsn +) SELECT - pg_is_in_recovery() AS replica, - '0/0'::pg_lsn AS lsn, + replica, + lsn, 0::bigint AS offset_bytes, now() AS timestamp, - (pg_control_checkpoint()).timeline_id AS timeline + CASE + WHEN replica THEN + (pg_control_checkpoint()).timeline_id + ELSE + ('x' || substr(pg_walfile_name(lsn), 1, 8))::bit(32)::int + END AS timeline +FROM wal "; /// LSN information. From 6283627e625d8998ff5a75046e4fd26bf5f6cf8d Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Tue, 6 Oct 2026 13:18:06 -0700 Subject: [PATCH 2/2] revert aurora query change --- pgdog/src/backend/pool/lsn_monitor.rs | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/pgdog/src/backend/pool/lsn_monitor.rs b/pgdog/src/backend/pool/lsn_monitor.rs index c2a36eca8..c0998a608 100644 --- a/pgdog/src/backend/pool/lsn_monitor.rs +++ b/pgdog/src/backend/pool/lsn_monitor.rs @@ -59,21 +59,12 @@ FROM wal "; static AURORA_LSN_QUERY: &str = " -WITH wal AS MATERIALIZED ( - SELECT pg_is_in_recovery() AS replica, '0/0'::pg_lsn AS lsn -) SELECT - replica, - lsn, + pg_is_in_recovery() AS replica, + '0/0'::pg_lsn AS lsn, 0::bigint AS offset_bytes, now() AS timestamp, - CASE - WHEN replica THEN - (pg_control_checkpoint()).timeline_id - ELSE - ('x' || substr(pg_walfile_name(lsn), 1, 8))::bit(32)::int - END AS timeline -FROM wal + (pg_control_checkpoint()).timeline_id AS timeline "; /// LSN information.