From 08afdff06be1ff65682d73e487e09ddeb3f6592c Mon Sep 17 00:00:00 2001 From: Bharath Rupireddy Date: Thu, 16 Mar 2023 07:44:42 +0000 Subject: [PATCH v9] Tweak pg_walinspect tests to be consistent --- .../pg_walinspect/expected/oldextversions.out | 14 ++++--- .../pg_walinspect/expected/pg_walinspect.out | 35 ++++++++-------- contrib/pg_walinspect/sql/oldextversions.sql | 15 ++++--- contrib/pg_walinspect/sql/pg_walinspect.sql | 40 +++++++++---------- 4 files changed, 54 insertions(+), 50 deletions(-) diff --git a/contrib/pg_walinspect/expected/oldextversions.out b/contrib/pg_walinspect/expected/oldextversions.out index da18914d92..a0bd51b780 100644 --- a/contrib/pg_walinspect/expected/oldextversions.out +++ b/contrib/pg_walinspect/expected/oldextversions.out @@ -1,4 +1,4 @@ --- test old extension version entry points +-- 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 @@ -28,7 +28,7 @@ SELECT 'init' FROM pg_create_physical_replication_slot('regress_pg_walinspect_sl 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. +-- Tests for the past functions. SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info_till_end_of_wal(:'wal_lsn1'); ok ---- @@ -41,13 +41,14 @@ SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats_till_end_of_wal(:'wal_lsn1'); t (1 row) -SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info_till_end_of_wal('FFFFFFFF/FFFFFFFF'); +-- Failure with highest possible start LSNs. +SELECT * 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'); +SELECT * 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 +-- Move to new version 1.1. ALTER EXTENSION pg_walinspect UPDATE TO '1.1'; --- List what version 1.1 contains +-- List what version 1.1 contains. \dx+ pg_walinspect Objects in extension "pg_walinspect" Object description @@ -58,6 +59,7 @@ ALTER EXTENSION pg_walinspect UPDATE TO '1.1'; function pg_get_wal_stats(pg_lsn,pg_lsn,boolean) (4 rows) +-- Clean up. SELECT pg_drop_replication_slot('regress_pg_walinspect_slot'); pg_drop_replication_slot -------------------------- diff --git a/contrib/pg_walinspect/expected/pg_walinspect.out b/contrib/pg_walinspect/expected/pg_walinspect.out index e3b31f15e3..ec62728ee8 100644 --- a/contrib/pg_walinspect/expected/pg_walinspect.out +++ b/contrib/pg_walinspect/expected/pg_walinspect.out @@ -9,7 +9,6 @@ SELECT 'init' FROM pg_create_physical_replication_slot('regress_pg_walinspect_sl (1 row) CREATE TABLE sample_tbl(col1 int, col2 int); --- Save some LSNs for comparisons SELECT pg_current_wal_lsn() AS wal_lsn1 \gset INSERT INTO sample_tbl SELECT * FROM generate_series(1, 2); SELECT pg_current_wal_lsn() AS wal_lsn2 \gset @@ -34,57 +33,57 @@ SELECT * FROM pg_get_wal_stats(:'wal_lsn2', :'wal_lsn1'); ERROR: WAL start LSN must be less than end LSN SELECT * FROM pg_get_wal_block_info(:'wal_lsn2', :'wal_lsn1'); ERROR: WAL start LSN must be less than end LSN --- LSNs with the highest value possible. -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_record_info('FFFFFFFF/FFFFFFFF'); +-- Failure with highest possible input LSN. +SELECT * FROM pg_get_wal_record_info('FFFFFFFF/FFFFFFFF'); ERROR: WAL input LSN must be less than current LSN --- Success with end LSNs. -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); +-- Successes with highest possible end LSNs. +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); ok ---- t (1 row) -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_stats(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); ok ---- t (1 row) -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); ok ---- t (1 row) --- failures with start LSNs -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_records_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); +-- Failures with highest possible start LSNs. +SELECT * FROM pg_get_wal_records_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); ERROR: WAL start LSN must be less than current LSN -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_stats('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); +SELECT * FROM pg_get_wal_stats('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); ERROR: WAL start LSN must be less than current LSN -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_block_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); +SELECT * FROM pg_get_wal_block_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); ERROR: WAL start LSN must be less than current LSN -- =================================================================== -- Tests for all function executions -- =================================================================== -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_record_info(:'wal_lsn1'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_record_info(:'wal_lsn1'); ok ---- t (1 row) -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', :'wal_lsn2'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', :'wal_lsn2'); ok ---- t (1 row) -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_stats(:'wal_lsn1', :'wal_lsn2'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats(:'wal_lsn1', :'wal_lsn2'); ok ---- t (1 row) -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', :'wal_lsn2'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', :'wal_lsn2'); ok ---- t @@ -115,7 +114,7 @@ SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', :'wal_lsn2' -- =================================================================== -- Tests to get block information from WAL record -- =================================================================== --- Update table to generate some block data +-- Update table to generate some block data. SELECT pg_current_wal_lsn() AS wal_lsn3 \gset UPDATE sample_tbl SET col1 = col1 + 1 WHERE col1 = 1; SELECT pg_current_wal_lsn() AS wal_lsn4 \gset @@ -172,7 +171,7 @@ SELECT has_function_privilege('regress_pg_walinspect', f (1 row) --- Functions accessible by users with role pg_read_server_files +-- Functions accessible by users with role pg_read_server_files. GRANT pg_read_server_files TO regress_pg_walinspect; SELECT has_function_privilege('regress_pg_walinspect', 'pg_get_wal_record_info(pg_lsn)', 'EXECUTE'); -- yes @@ -203,7 +202,7 @@ SELECT has_function_privilege('regress_pg_walinspect', (1 row) REVOKE pg_read_server_files FROM regress_pg_walinspect; --- Superuser can grant execute to other users +-- Superuser can grant execute to other users. GRANT EXECUTE ON FUNCTION pg_get_wal_record_info(pg_lsn) TO regress_pg_walinspect; GRANT EXECUTE ON FUNCTION pg_get_wal_records_info(pg_lsn, pg_lsn) diff --git a/contrib/pg_walinspect/sql/oldextversions.sql b/contrib/pg_walinspect/sql/oldextversions.sql index 1f8307816e..c61fb1fe71 100644 --- a/contrib/pg_walinspect/sql/oldextversions.sql +++ b/contrib/pg_walinspect/sql/oldextversions.sql @@ -1,4 +1,4 @@ --- test old extension version entry points +-- Test old extension version entry points. CREATE EXTENSION pg_walinspect WITH VERSION '1.0'; @@ -20,18 +20,21 @@ 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. +-- Tests for the past functions. SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info_till_end_of_wal(:'wal_lsn1'); SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats_till_end_of_wal(:'wal_lsn1'); -SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info_till_end_of_wal('FFFFFFFF/FFFFFFFF'); -SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats_till_end_of_wal('FFFFFFFF/FFFFFFFF'); --- Move to new version 1.1 +-- Failure with highest possible start LSNs. +SELECT * FROM pg_get_wal_records_info_till_end_of_wal('FFFFFFFF/FFFFFFFF'); +SELECT * FROM pg_get_wal_stats_till_end_of_wal('FFFFFFFF/FFFFFFFF'); + +-- Move to new version 1.1. ALTER EXTENSION pg_walinspect UPDATE TO '1.1'; --- List what version 1.1 contains +-- List what version 1.1 contains. \dx+ pg_walinspect +-- Clean up. SELECT pg_drop_replication_slot('regress_pg_walinspect_slot'); DROP TABLE sample_tbl; diff --git a/contrib/pg_walinspect/sql/pg_walinspect.sql b/contrib/pg_walinspect/sql/pg_walinspect.sql index ba4d17df6c..6d0b637354 100644 --- a/contrib/pg_walinspect/sql/pg_walinspect.sql +++ b/contrib/pg_walinspect/sql/pg_walinspect.sql @@ -7,8 +7,6 @@ CREATE EXTENSION pg_walinspect; SELECT 'init' FROM pg_create_physical_replication_slot('regress_pg_walinspect_slot', true, false); CREATE TABLE sample_tbl(col1 int, col2 int); - --- Save some LSNs for comparisons SELECT pg_current_wal_lsn() AS wal_lsn1 \gset INSERT INTO sample_tbl SELECT * FROM generate_series(1, 2); SELECT pg_current_wal_lsn() AS wal_lsn2 \gset @@ -31,25 +29,27 @@ SELECT * FROM pg_get_wal_records_info(:'wal_lsn2', :'wal_lsn1'); SELECT * FROM pg_get_wal_stats(:'wal_lsn2', :'wal_lsn1'); SELECT * FROM pg_get_wal_block_info(:'wal_lsn2', :'wal_lsn1'); --- LSNs with the highest value possible. -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_record_info('FFFFFFFF/FFFFFFFF'); --- Success with end LSNs. -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_stats(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); --- failures with start LSNs -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_records_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_stats('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_block_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); +-- Failure with highest possible input LSN. +SELECT * FROM pg_get_wal_record_info('FFFFFFFF/FFFFFFFF'); + +-- Successes with highest possible end LSNs. +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', 'FFFFFFFF/FFFFFFFF'); + +-- Failures with highest possible start LSNs. +SELECT * FROM pg_get_wal_records_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); +SELECT * FROM pg_get_wal_stats('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); +SELECT * FROM pg_get_wal_block_info('FFFFFFFF/FFFFFFFE', 'FFFFFFFF/FFFFFFFF'); -- =================================================================== -- Tests for all function executions -- =================================================================== -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_record_info(:'wal_lsn1'); -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', :'wal_lsn2'); -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_stats(:'wal_lsn1', :'wal_lsn2'); -SELECT COUNT(*) >= 0 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', :'wal_lsn2'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_record_info(:'wal_lsn1'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', :'wal_lsn2'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_stats(:'wal_lsn1', :'wal_lsn2'); +SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_block_info(:'wal_lsn1', :'wal_lsn2'); -- =================================================================== -- Test for filtering out WAL records of a particular table @@ -72,7 +72,7 @@ SELECT COUNT(*) >= 1 AS ok FROM pg_get_wal_records_info(:'wal_lsn1', :'wal_lsn2' -- Tests to get block information from WAL record -- =================================================================== --- Update table to generate some block data +-- Update table to generate some block data. SELECT pg_current_wal_lsn() AS wal_lsn3 \gset UPDATE sample_tbl SET col1 = col1 + 1 WHERE col1 = 1; SELECT pg_current_wal_lsn() AS wal_lsn4 \gset @@ -103,9 +103,9 @@ SELECT has_function_privilege('regress_pg_walinspect', SELECT has_function_privilege('regress_pg_walinspect', 'pg_get_wal_block_info(pg_lsn, pg_lsn) ', 'EXECUTE'); -- no --- Functions accessible by users with role pg_read_server_files - +-- Functions accessible by users with role pg_read_server_files. GRANT pg_read_server_files TO regress_pg_walinspect; + SELECT has_function_privilege('regress_pg_walinspect', 'pg_get_wal_record_info(pg_lsn)', 'EXECUTE'); -- yes SELECT has_function_privilege('regress_pg_walinspect', @@ -117,7 +117,7 @@ SELECT has_function_privilege('regress_pg_walinspect', REVOKE pg_read_server_files FROM regress_pg_walinspect; --- Superuser can grant execute to other users +-- Superuser can grant execute to other users. GRANT EXECUTE ON FUNCTION pg_get_wal_record_info(pg_lsn) TO regress_pg_walinspect; GRANT EXECUTE ON FUNCTION pg_get_wal_records_info(pg_lsn, pg_lsn) -- 2.34.1