diff options
author | Michael Paquier <michael@paquier.xyz> | 2022-12-20 13:36:27 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2022-12-20 13:36:27 +0900 |
commit | cca186348929cd75f23ef1b25922386bf38cf99c (patch) | |
tree | f4b4a6ae944991ef0275fed8eebcd867e40cc0e6 /src/test | |
parent | b3bb7d12af97f035c3aa3ad8dd41b44d01e2defa (diff) |
Add pg_dissect_walfile_name()
This function takes in input a WAL segment name and returns a tuple made
of the segment sequence number (dependent on the WAL segment size of the
cluster) and its timeline, as of a thin SQL wrapper around the existing
XLogFromFileName().
This function has multiple usages, like being able to compile a LSN from
a file name and an offset, or finding the timeline of a segment without
having to do to some maths based on the first eight characters of the
segment.
Bump catalog version.
Author: Bharath Rupireddy
Reviewed-by: Nathan Bossart, Kyotaro Horiguchi, Maxim Orlov, Michael
Paquier
Discussion: https://postgr.es/m/CALj2ACWV=FCddsxcGbVOA=cvPyMr75YCFbSQT6g4KDj=gcJK4g@mail.gmail.com
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/misc_functions.out | 23 | ||||
-rw-r--r-- | src/test/regress/sql/misc_functions.sql | 8 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/test/regress/expected/misc_functions.out b/src/test/regress/expected/misc_functions.out index 88bb696ded8..2907f779a75 100644 --- a/src/test/regress/expected/misc_functions.out +++ b/src/test/regress/expected/misc_functions.out @@ -619,3 +619,26 @@ SELECT count(*) > 0 AS ok FROM pg_control_system(); t (1 row) +-- pg_dissect_walfile_name +SELECT * FROM pg_dissect_walfile_name(NULL); + segno | timeline_id +-------+------------- + | +(1 row) + +SELECT * FROM pg_dissect_walfile_name('invalid'); +ERROR: invalid WAL file name "invalid" +SELECT segno > 0 AS ok_segno, timeline_id + FROM pg_dissect_walfile_name('000000010000000100000000'); + ok_segno | timeline_id +----------+------------- + t | 1 +(1 row) + +SELECT segno > 0 AS ok_segno, timeline_id + FROM pg_dissect_walfile_name('ffffffFF00000001000000af'); + ok_segno | timeline_id +----------+------------- + t | 4294967295 +(1 row) + diff --git a/src/test/regress/sql/misc_functions.sql b/src/test/regress/sql/misc_functions.sql index b07e9e8dbb3..0c3d75fd1ac 100644 --- a/src/test/regress/sql/misc_functions.sql +++ b/src/test/regress/sql/misc_functions.sql @@ -229,3 +229,11 @@ SELECT count(*) > 0 AS ok FROM pg_control_checkpoint(); SELECT count(*) > 0 AS ok FROM pg_control_init(); SELECT count(*) > 0 AS ok FROM pg_control_recovery(); SELECT count(*) > 0 AS ok FROM pg_control_system(); + +-- pg_dissect_walfile_name +SELECT * FROM pg_dissect_walfile_name(NULL); +SELECT * FROM pg_dissect_walfile_name('invalid'); +SELECT segno > 0 AS ok_segno, timeline_id + FROM pg_dissect_walfile_name('000000010000000100000000'); +SELECT segno > 0 AS ok_segno, timeline_id + FROM pg_dissect_walfile_name('ffffffFF00000001000000af'); |