diff options
| author | Bruce Momjian | 2023-11-25 00:44:09 +0000 |
|---|---|---|
| committer | Bruce Momjian | 2023-11-25 00:44:09 +0000 |
| commit | 344afc77690b4cef2605420d67c1d1ceb28760cc (patch) | |
| tree | 69f4fc0d673dc2d51353ab0f4de14ca22e887706 /src/test | |
| parent | 5c4c7efaddd4ddd70176dadf3097efcacf811adf (diff) | |
modify segno. for pg_walfile_name() and pg_walfile_name_offset()
Previously these functions returned the previous segment number if the
LSN was on a segment boundary. We now always return the current segment
number for an LSN.
Docs updated to reflect this change. Regression tests added, author
Andres Freund.
Also mentioned in thread https://postgr.es/m/flat/20220204225057.GA1535307%40nathanxps13#d964275c9540d8395e138efc0a75f7e8
BACKWARD INCOMPATIBILITY
Reported-by: Kyotaro Horiguchi
Discussion: https://postgr.es/m/20190726.172120.101752680.horikyota.ntt@gmail.com
Co-authored-by: Kyotaro Horiguchi
Backpatch-through: master
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/misc_functions.out | 30 | ||||
| -rw-r--r-- | src/test/regress/sql/misc_functions.sql | 15 |
2 files changed, 43 insertions, 2 deletions
diff --git a/src/test/regress/expected/misc_functions.out b/src/test/regress/expected/misc_functions.out index c6699483708..93021340773 100644 --- a/src/test/regress/expected/misc_functions.out +++ b/src/test/regress/expected/misc_functions.out @@ -619,7 +619,7 @@ SELECT count(*) > 0 AS ok FROM pg_control_system(); t (1 row) --- pg_split_walfile_name +-- pg_split_walfile_name, pg_walfile_name & pg_walfile_name_offset SELECT * FROM pg_split_walfile_name(NULL); segment_number | timeline_id ----------------+------------- @@ -642,3 +642,31 @@ SELECT segment_number > 0 AS ok_segment_number, timeline_id t | 4294967295 (1 row) +SELECT setting::int8 AS segment_size +FROM pg_settings +WHERE name = 'wal_segment_size' +\gset +SELECT segment_number, file_offset +FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size), + pg_split_walfile_name(file_name); + segment_number | file_offset +----------------+------------- + 1 | 0 +(1 row) + +SELECT segment_number, file_offset +FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size + 1), + pg_split_walfile_name(file_name); + segment_number | file_offset +----------------+------------- + 1 | 1 +(1 row) + +SELECT segment_number, file_offset = :segment_size - 1 +FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size - 1), + pg_split_walfile_name(file_name); + segment_number | ?column? +----------------+---------- + 0 | t +(1 row) + diff --git a/src/test/regress/sql/misc_functions.sql b/src/test/regress/sql/misc_functions.sql index b57f01f3e95..d3dc591173d 100644 --- a/src/test/regress/sql/misc_functions.sql +++ b/src/test/regress/sql/misc_functions.sql @@ -230,10 +230,23 @@ 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_split_walfile_name +-- pg_split_walfile_name, pg_walfile_name & pg_walfile_name_offset SELECT * FROM pg_split_walfile_name(NULL); SELECT * FROM pg_split_walfile_name('invalid'); SELECT segment_number > 0 AS ok_segment_number, timeline_id FROM pg_split_walfile_name('000000010000000100000000'); SELECT segment_number > 0 AS ok_segment_number, timeline_id FROM pg_split_walfile_name('ffffffFF00000001000000af'); +SELECT setting::int8 AS segment_size +FROM pg_settings +WHERE name = 'wal_segment_size' +\gset +SELECT segment_number, file_offset +FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size), + pg_split_walfile_name(file_name); +SELECT segment_number, file_offset +FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size + 1), + pg_split_walfile_name(file_name); +SELECT segment_number, file_offset = :segment_size - 1 +FROM pg_walfile_name_offset('0/0'::pg_lsn + :segment_size - 1), + pg_split_walfile_name(file_name); |
