@@ -132,4 +132,139 @@ SELECT test_slru_page_exists(12393);
132
132
f
133
133
(1 row)
134
134
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
+
135
270
DROP EXTENSION test_slru;
0 commit comments