Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit a60b8a5

Browse files
committed
Add SLRU tests for 64-bit page case
4ed8f09 added 64-bit page numbering for SLRU. This commit adds tests for page numbers higher than 2^32. Author: Maxim Orlov Reviewed-by: Aleksander Alekseev, Alexander Korotkov Discussion: https://postgr.es/m/CACG%3DezZe1NQSCnfHOr78AtAZxJZeCvxrts0ygrxYwe%3DpyyjVWA%40mail.gmail.com Discussion: https://postgr.es/m/CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq%2BvfkmTF5Q%40mail.gmail.com
1 parent 5a1dfde commit a60b8a5

File tree

2 files changed

+173
-0
lines changed

2 files changed

+173
-0
lines changed

src/test/modules/test_slru/expected/test_slru.out

+135
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,139 @@ SELECT test_slru_page_exists(12393);
132132
f
133133
(1 row)
134134

135+
--
136+
-- Test 64-bit pages
137+
--
138+
SELECT test_slru_page_exists(0x1234500000000);
139+
test_slru_page_exists
140+
-----------------------
141+
f
142+
(1 row)
143+
144+
SELECT test_slru_page_write(0x1234500000000, 'Test SLRU 64-bit');
145+
test_slru_page_write
146+
----------------------
147+
148+
(1 row)
149+
150+
SELECT test_slru_page_read(0x1234500000000);
151+
test_slru_page_read
152+
---------------------
153+
Test SLRU 64-bit
154+
(1 row)
155+
156+
SELECT test_slru_page_exists(0x1234500000000);
157+
test_slru_page_exists
158+
-----------------------
159+
t
160+
(1 row)
161+
162+
-- 48 extra pages
163+
SELECT count(test_slru_page_write(a, 'Test SLRU 64-bit'))
164+
FROM generate_series(0x1234500000001, 0x1234500000030, 1) as a;
165+
count
166+
-------
167+
48
168+
(1 row)
169+
170+
-- Reading page in buffer for read and write
171+
SELECT test_slru_page_read(0x1234500000020, true);
172+
test_slru_page_read
173+
---------------------
174+
Test SLRU 64-bit
175+
(1 row)
176+
177+
-- Reading page in buffer for read-only
178+
SELECT test_slru_page_readonly(0x1234500000020);
179+
test_slru_page_readonly
180+
-------------------------
181+
Test SLRU 64-bit
182+
(1 row)
183+
184+
-- Reading page not in buffer with read-only
185+
SELECT test_slru_page_readonly(0x1234500000001);
186+
test_slru_page_readonly
187+
-------------------------
188+
Test SLRU 64-bit
189+
(1 row)
190+
191+
-- Write all the pages in buffers
192+
SELECT test_slru_page_writeall();
193+
test_slru_page_writeall
194+
-------------------------
195+
196+
(1 row)
197+
198+
-- Flush the last page written out.
199+
SELECT test_slru_page_sync(0x1234500000030);
200+
NOTICE: Called SlruSyncFileTag() for segment 10007944888321 on path pg_test_slru/000091A28000001
201+
test_slru_page_sync
202+
---------------------
203+
204+
(1 row)
205+
206+
SELECT test_slru_page_exists(0x1234500000030);
207+
test_slru_page_exists
208+
-----------------------
209+
t
210+
(1 row)
211+
212+
-- Segment deletion
213+
SELECT test_slru_page_delete(0x1234500000030);
214+
NOTICE: Called SlruDeleteSegment() for segment 10007944888321
215+
test_slru_page_delete
216+
-----------------------
217+
218+
(1 row)
219+
220+
SELECT test_slru_page_exists(0x1234500000030);
221+
test_slru_page_exists
222+
-----------------------
223+
f
224+
(1 row)
225+
226+
-- Page truncation
227+
SELECT test_slru_page_exists(0x1234500000020);
228+
test_slru_page_exists
229+
-----------------------
230+
f
231+
(1 row)
232+
233+
SELECT test_slru_page_truncate(0x1234500000020);
234+
test_slru_page_truncate
235+
-------------------------
236+
237+
(1 row)
238+
239+
SELECT test_slru_page_exists(0x1234500000020);
240+
test_slru_page_exists
241+
-----------------------
242+
f
243+
(1 row)
244+
245+
-- Full deletion
246+
SELECT test_slru_delete_all();
247+
test_slru_delete_all
248+
----------------------
249+
250+
(1 row)
251+
252+
SELECT test_slru_page_exists(0x1234500000000);
253+
test_slru_page_exists
254+
-----------------------
255+
f
256+
(1 row)
257+
258+
SELECT test_slru_page_exists(0x1234500000020);
259+
test_slru_page_exists
260+
-----------------------
261+
f
262+
(1 row)
263+
264+
SELECT test_slru_page_exists(0x1234500000030);
265+
test_slru_page_exists
266+
-----------------------
267+
f
268+
(1 row)
269+
135270
DROP EXTENSION test_slru;

src/test/modules/test_slru/sql/test_slru.sql

+38
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,42 @@ SELECT test_slru_page_exists(12345);
3535
SELECT test_slru_page_exists(12377);
3636
SELECT test_slru_page_exists(12393);
3737

38+
--
39+
-- Test 64-bit pages
40+
--
41+
SELECT test_slru_page_exists(0x1234500000000);
42+
SELECT test_slru_page_write(0x1234500000000, 'Test SLRU 64-bit');
43+
SELECT test_slru_page_read(0x1234500000000);
44+
SELECT test_slru_page_exists(0x1234500000000);
45+
46+
-- 48 extra pages
47+
SELECT count(test_slru_page_write(a, 'Test SLRU 64-bit'))
48+
FROM generate_series(0x1234500000001, 0x1234500000030, 1) as a;
49+
50+
-- Reading page in buffer for read and write
51+
SELECT test_slru_page_read(0x1234500000020, true);
52+
-- Reading page in buffer for read-only
53+
SELECT test_slru_page_readonly(0x1234500000020);
54+
-- Reading page not in buffer with read-only
55+
SELECT test_slru_page_readonly(0x1234500000001);
56+
57+
-- Write all the pages in buffers
58+
SELECT test_slru_page_writeall();
59+
-- Flush the last page written out.
60+
SELECT test_slru_page_sync(0x1234500000030);
61+
SELECT test_slru_page_exists(0x1234500000030);
62+
-- Segment deletion
63+
SELECT test_slru_page_delete(0x1234500000030);
64+
SELECT test_slru_page_exists(0x1234500000030);
65+
-- Page truncation
66+
SELECT test_slru_page_exists(0x1234500000020);
67+
SELECT test_slru_page_truncate(0x1234500000020);
68+
SELECT test_slru_page_exists(0x1234500000020);
69+
70+
-- Full deletion
71+
SELECT test_slru_delete_all();
72+
SELECT test_slru_page_exists(0x1234500000000);
73+
SELECT test_slru_page_exists(0x1234500000020);
74+
SELECT test_slru_page_exists(0x1234500000030);
75+
3876
DROP EXTENSION test_slru;

0 commit comments

Comments
 (0)