diff --git a/src/test/modules/test_slru/expected/test_slru.out b/src/test/modules/test_slru/expected/test_slru.out index 4e5e562b434..185c56e5d62 100644 --- a/src/test/modules/test_slru/expected/test_slru.out +++ b/src/test/modules/test_slru/expected/test_slru.out @@ -132,4 +132,139 @@ SELECT test_slru_page_exists(12393); f (1 row) +-- +-- Test 64-bit pages +-- +SELECT test_slru_page_exists(0x1234500000000); + test_slru_page_exists +----------------------- + f +(1 row) + +SELECT test_slru_page_write(0x1234500000000, 'Test SLRU 64-bit'); + test_slru_page_write +---------------------- + +(1 row) + +SELECT test_slru_page_read(0x1234500000000); + test_slru_page_read +--------------------- + Test SLRU 64-bit +(1 row) + +SELECT test_slru_page_exists(0x1234500000000); + test_slru_page_exists +----------------------- + t +(1 row) + +-- 48 extra pages +SELECT count(test_slru_page_write(a, 'Test SLRU 64-bit')) + FROM generate_series(0x1234500000001, 0x1234500000030, 1) as a; + count +------- + 48 +(1 row) + +-- Reading page in buffer for read and write +SELECT test_slru_page_read(0x1234500000020, true); + test_slru_page_read +--------------------- + Test SLRU 64-bit +(1 row) + +-- Reading page in buffer for read-only +SELECT test_slru_page_readonly(0x1234500000020); + test_slru_page_readonly +------------------------- + Test SLRU 64-bit +(1 row) + +-- Reading page not in buffer with read-only +SELECT test_slru_page_readonly(0x1234500000001); + test_slru_page_readonly +------------------------- + Test SLRU 64-bit +(1 row) + +-- Write all the pages in buffers +SELECT test_slru_page_writeall(); + test_slru_page_writeall +------------------------- + +(1 row) + +-- Flush the last page written out. +SELECT test_slru_page_sync(0x1234500000030); +NOTICE: Called SlruSyncFileTag() for segment 10007944888321 on path pg_test_slru/000091A28000001 + test_slru_page_sync +--------------------- + +(1 row) + +SELECT test_slru_page_exists(0x1234500000030); + test_slru_page_exists +----------------------- + t +(1 row) + +-- Segment deletion +SELECT test_slru_page_delete(0x1234500000030); +NOTICE: Called SlruDeleteSegment() for segment 10007944888321 + test_slru_page_delete +----------------------- + +(1 row) + +SELECT test_slru_page_exists(0x1234500000030); + test_slru_page_exists +----------------------- + f +(1 row) + +-- Page truncation +SELECT test_slru_page_exists(0x1234500000020); + test_slru_page_exists +----------------------- + f +(1 row) + +SELECT test_slru_page_truncate(0x1234500000020); + test_slru_page_truncate +------------------------- + +(1 row) + +SELECT test_slru_page_exists(0x1234500000020); + test_slru_page_exists +----------------------- + f +(1 row) + +-- Full deletion +SELECT test_slru_delete_all(); + test_slru_delete_all +---------------------- + +(1 row) + +SELECT test_slru_page_exists(0x1234500000000); + test_slru_page_exists +----------------------- + f +(1 row) + +SELECT test_slru_page_exists(0x1234500000020); + test_slru_page_exists +----------------------- + f +(1 row) + +SELECT test_slru_page_exists(0x1234500000030); + test_slru_page_exists +----------------------- + f +(1 row) + DROP EXTENSION test_slru; diff --git a/src/test/modules/test_slru/sql/test_slru.sql b/src/test/modules/test_slru/sql/test_slru.sql index fe0d1342a94..b1b376581ab 100644 --- a/src/test/modules/test_slru/sql/test_slru.sql +++ b/src/test/modules/test_slru/sql/test_slru.sql @@ -35,4 +35,42 @@ SELECT test_slru_page_exists(12345); SELECT test_slru_page_exists(12377); SELECT test_slru_page_exists(12393); +-- +-- Test 64-bit pages +-- +SELECT test_slru_page_exists(0x1234500000000); +SELECT test_slru_page_write(0x1234500000000, 'Test SLRU 64-bit'); +SELECT test_slru_page_read(0x1234500000000); +SELECT test_slru_page_exists(0x1234500000000); + +-- 48 extra pages +SELECT count(test_slru_page_write(a, 'Test SLRU 64-bit')) + FROM generate_series(0x1234500000001, 0x1234500000030, 1) as a; + +-- Reading page in buffer for read and write +SELECT test_slru_page_read(0x1234500000020, true); +-- Reading page in buffer for read-only +SELECT test_slru_page_readonly(0x1234500000020); +-- Reading page not in buffer with read-only +SELECT test_slru_page_readonly(0x1234500000001); + +-- Write all the pages in buffers +SELECT test_slru_page_writeall(); +-- Flush the last page written out. +SELECT test_slru_page_sync(0x1234500000030); +SELECT test_slru_page_exists(0x1234500000030); +-- Segment deletion +SELECT test_slru_page_delete(0x1234500000030); +SELECT test_slru_page_exists(0x1234500000030); +-- Page truncation +SELECT test_slru_page_exists(0x1234500000020); +SELECT test_slru_page_truncate(0x1234500000020); +SELECT test_slru_page_exists(0x1234500000020); + +-- Full deletion +SELECT test_slru_delete_all(); +SELECT test_slru_page_exists(0x1234500000000); +SELECT test_slru_page_exists(0x1234500000020); +SELECT test_slru_page_exists(0x1234500000030); + DROP EXTENSION test_slru;