Movatterモバイル変換


[0]ホーム

URL:


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

Sign up
Appearance settings

Commitfa41cf8

Browse files
Avoid misinterpreting GiST pages in pageinspect.
GistPageSetDeleted() sets pd_lower when deleting a page, and sets thepage contents to a GISTDeletedPageContents. Avoid treating deleted GiSTpages as regular slotted pages within pageinspect.Oversight in commit756ab29.Author: Andrey Borodin <x4mmm@yandex-team.ru>
1 parent7cde6b1 commitfa41cf8

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

‎contrib/pageinspect/gistfuncs.c

Lines 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
MemoryContextoldcontext;
104104
Pagepage;
105105
OffsetNumberoffset;
106+
OffsetNumbermaxoff=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
Datumvalues[4];
@@ -187,6 +191,7 @@ gist_page_items(PG_FUNCTION_ARGS)
187191
MemoryContextoldcontext;
188192
Pagepage;
189193
OffsetNumberoffset;
194+
OffsetNumbermaxoff=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
Datumvalues[4];

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp