Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fa41cf8

Browse filesBrowse files
Avoid misinterpreting GiST pages in pageinspect.
GistPageSetDeleted() sets pd_lower when deleting a page, and sets the page contents to a GISTDeletedPageContents. Avoid treating deleted GiST pages as regular slotted pages within pageinspect. Oversight in commit 756ab29. Author: Andrey Borodin <x4mmm@yandex-team.ru>
1 parent 7cde6b1 commit fa41cf8
Copy full SHA for fa41cf8

File tree

Expand file treeCollapse file tree

1 file changed

+10
-2
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+10
-2
lines changed

‎contrib/pageinspect/gistfuncs.c

Copy file name to clipboardExpand all lines: contrib/pageinspect/gistfuncs.c
+10-2Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ gist_page_items_bytea(PG_FUNCTION_ARGS)
103103
MemoryContext oldcontext;
104104
Page page;
105105
OffsetNumber offset;
106+
OffsetNumber maxoff = InvalidOffsetNumber;
106107

107108
if (!superuser())
108109
ereport(ERROR,
@@ -135,11 +136,14 @@ gist_page_items_bytea(PG_FUNCTION_ARGS)
135136

136137
page = get_page_from_raw(raw_page);
137138

139+
/* Avoid bogus PageGetMaxOffsetNumber() call with deleted pages */
138140
if (GistPageIsDeleted(page))
139141
elog(NOTICE, "page is deleted");
142+
else
143+
maxoff = PageGetMaxOffsetNumber(page);
140144

141145
for (offset = FirstOffsetNumber;
142-
offset <= PageGetMaxOffsetNumber(page);
146+
offset <= maxoff;
143147
offset++)
144148
{
145149
Datum values[4];
@@ -187,6 +191,7 @@ gist_page_items(PG_FUNCTION_ARGS)
187191
MemoryContext oldcontext;
188192
Page page;
189193
OffsetNumber offset;
194+
OffsetNumber maxoff = InvalidOffsetNumber;
190195

191196
if (!superuser())
192197
ereport(ERROR,
@@ -222,11 +227,14 @@ gist_page_items(PG_FUNCTION_ARGS)
222227

223228
page = get_page_from_raw(raw_page);
224229

230+
/* Avoid bogus PageGetMaxOffsetNumber() call with deleted pages */
225231
if (GistPageIsDeleted(page))
226232
elog(NOTICE, "page is deleted");
233+
else
234+
maxoff = PageGetMaxOffsetNumber(page);
227235

228236
for (offset = FirstOffsetNumber;
229-
offset <= PageGetMaxOffsetNumber(page);
237+
offset <= maxoff;
230238
offset++)
231239
{
232240
Datum values[4];

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.