mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-06 15:59:21 +02:00
This commit reworks a bit the set-returning functions of pg_walinspect, making them more flexible regarding their end LSN: - pg_get_wal_records_info() - pg_get_wal_stats() - pg_get_wal_block_info() The end LSNs given to these functions is now handled so as a value higher than the current LSN of the cluster (insert LSN for a primary, or replay LSN for a standby) does not raise an error, giving more flexibility to monitoring queries. Instead, the functions return results up to the current LSN, as found at the beginning of each function call. As an effect of that, pg_get_wal_records_info_till_end_of_wal() and pg_get_wal_stats_till_end_of_wal() are now removed from 1.1, as the existing, equivalent functions are able to offer the same possibilities. Author: Bharath Rupireddy Discussion: https://postgr.es/m/CALj2ACU0_q-o4DSweyaW9NO1KBx-QkN6G_OzYQvpjf3CZVASkg@mail.gmail.com
65 lines
2.2 KiB
Plaintext
65 lines
2.2 KiB
Plaintext
-- test old extension version entry points
|
|
CREATE EXTENSION pg_walinspect WITH VERSION '1.0';
|
|
-- Mask DETAIL messages as these could refer to current LSN positions.
|
|
\set VERBOSITY terse
|
|
-- List what version 1.0 contains
|
|
\dx+ pg_walinspect
|
|
Objects in extension "pg_walinspect"
|
|
Object description
|
|
-----------------------------------------------------------
|
|
function pg_get_wal_record_info(pg_lsn)
|
|
function pg_get_wal_records_info(pg_lsn,pg_lsn)
|
|
function pg_get_wal_records_info_till_end_of_wal(pg_lsn)
|
|
function pg_get_wal_stats(pg_lsn,pg_lsn,boolean)
|
|
function pg_get_wal_stats_till_end_of_wal(pg_lsn,boolean)
|
|
(5 rows)
|
|
|
|
-- Make sure checkpoints don't interfere with the test.
|
|
SELECT 'init' FROM pg_create_physical_replication_slot('regress_pg_walinspect_slot', true, false);
|
|
?column?
|
|
----------
|
|
init
|
|
(1 row)
|
|
|
|
CREATE TABLE sample_tbl(col1 int, col2 int);
|
|
SELECT pg_current_wal_lsn() AS wal_lsn1 \gset
|
|
INSERT INTO sample_tbl SELECT * FROM generate_series(1, 2);
|
|
-- Check bounds for these past functions.
|
|
SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info_till_end_of_wal(:'wal_lsn1');
|
|
ok
|
|
----
|
|
t
|
|
(1 row)
|
|
|
|
SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats_till_end_of_wal(:'wal_lsn1');
|
|
ok
|
|
----
|
|
t
|
|
(1 row)
|
|
|
|
SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info_till_end_of_wal('FFFFFFFF/FFFFFFFF');
|
|
ERROR: WAL start LSN must be less than current LSN
|
|
SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats_till_end_of_wal('FFFFFFFF/FFFFFFFF');
|
|
ERROR: WAL start LSN must be less than current LSN
|
|
-- Move to new version 1.1
|
|
ALTER EXTENSION pg_walinspect UPDATE TO '1.1';
|
|
-- List what version 1.1 contains
|
|
\dx+ pg_walinspect
|
|
Objects in extension "pg_walinspect"
|
|
Object description
|
|
--------------------------------------------------
|
|
function pg_get_wal_block_info(pg_lsn,pg_lsn)
|
|
function pg_get_wal_record_info(pg_lsn)
|
|
function pg_get_wal_records_info(pg_lsn,pg_lsn)
|
|
function pg_get_wal_stats(pg_lsn,pg_lsn,boolean)
|
|
(4 rows)
|
|
|
|
SELECT pg_drop_replication_slot('regress_pg_walinspect_slot');
|
|
pg_drop_replication_slot
|
|
--------------------------
|
|
|
|
(1 row)
|
|
|
|
DROP TABLE sample_tbl;
|
|
DROP EXTENSION pg_walinspect;
|