mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-03 08:00:21 +08:00
Improve a bit the tests of pg_walinspect
This commit improves the tests of pg_walinspect on a few things: - Remove aggregates for queries that should fail. If the code is reworked in such a way that the behavior of these queries is changed, we would get more input from them, written this way. - Expect at least one record reported in the valid queries doing scans across ranges, rather than zero records. - Adjust a few comments, for consistency. Author: Bharath Rupireddy Discussion: https://postgr.es/m/CALj2ACVaoXW3nJD9zq8E66BEf-phgJfFcKRVJq9GXkuX0b3ULQ@mail.gmail.com
This commit is contained in:
parent
8fba928fd7
commit
4f1882b960
@ -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');
|
||||
-- Failures with 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
|
||||
|
@ -9,7 +9,7 @@ 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
|
||||
-- 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
|
||||
@ -35,56 +35,56 @@ 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');
|
||||
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');
|
||||
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 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 +115,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 +172,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 +203,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)
|
||||
|
@ -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,16 +20,17 @@ 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');
|
||||
-- Failures with 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
|
||||
-- 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
|
||||
|
||||
SELECT pg_drop_replication_slot('regress_pg_walinspect_slot');
|
||||
|
@ -8,7 +8,7 @@ SELECT 'init' FROM pg_create_physical_replication_slot('regress_pg_walinspect_sl
|
||||
|
||||
CREATE TABLE sample_tbl(col1 int, col2 int);
|
||||
|
||||
-- Save some LSNs for comparisons
|
||||
-- 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
|
||||
@ -32,24 +32,24 @@ 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');
|
||||
SELECT * 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');
|
||||
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 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)
|
||||
|
Loading…
Reference in New Issue
Block a user