Thread: pgsql: Add functions to 'pageinspect' to inspect GiST indexes.

pgsql: Add functions to 'pageinspect' to inspect GiST indexes.

From
Heikki Linnakangas
Date:
Add functions to 'pageinspect' to inspect GiST indexes.

Author: Andrey Borodin and me
Discussion: https://www.postgresql.org/message-id/3E4F9093-A1B5-4DF8-A292-0B48692E3954%40yandex-team.ru

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/756ab29124d7850d4392e2227b67b69b61576cd6

Modified Files
--------------
contrib/pageinspect/Makefile                  |   6 +-
contrib/pageinspect/expected/gist.out         |  87 ++++++++
contrib/pageinspect/gistfuncs.c               | 287 ++++++++++++++++++++++++++
contrib/pageinspect/pageinspect--1.8--1.9.sql |  41 ++++
contrib/pageinspect/pageinspect.control       |   2 +-
contrib/pageinspect/sql/gist.sql              |  18 ++
doc/src/sgml/pageinspect.sgml                 |  89 ++++++++
7 files changed, 527 insertions(+), 3 deletions(-)


Re: pgsql: Add functions to 'pageinspect' to inspect GiST indexes.

From
Peter Geoghegan
Date:
On Wed, Jan 13, 2021 at 12:36 AM Heikki Linnakangas
<heikki.linnakangas@iki.fi> wrote:
> Add functions to 'pageinspect' to inspect GiST indexes.

Is gist_page_items() robust with deleted pages? I think that it's
unsafe to assume that deleted pages will have index tuples, since the
page contents will actually be a GISTDeletedPageContents.

Simplest fix would be to assume maxoff is 0 for the page, perhaps.
Right now we just use PageGetMaxOffsetNumber(), which implicitly
assumes that the page uses slotted tuples with an array of line
pointers (actually it can also deal with a zeroed page, but that's not
relevant here).

-- 
Peter Geoghegan



Re: pgsql: Add functions to 'pageinspect' to inspect GiST indexes.

From
Andrey Borodin
Date:

> 12 февр. 2021 г., в 01:53, Peter Geoghegan <pg@bowt.ie> написал(а):
>
> On Wed, Jan 13, 2021 at 12:36 AM Heikki Linnakangas
> <heikki.linnakangas@iki.fi> wrote:
>> Add functions to 'pageinspect' to inspect GiST indexes.
>
> Is gist_page_items() robust with deleted pages? I think that it's
> unsafe to assume that deleted pages will have index tuples, since the
> page contents will actually be a GISTDeletedPageContents.
>
> Simplest fix would be to assume maxoff is 0 for the page, perhaps.
> Right now we just use PageGetMaxOffsetNumber(), which implicitly
> assumes that the page uses slotted tuples with an array of line
> pointers (actually it can also deal with a zeroed page, but that's not
> relevant here).


Thanks, Peter! I agree that taking PageGetMaxOffsetNumber() seems
incorrect for deleted page, because we set pd_lower for the deleted page.
Also, there was an idea to add a column for LP_DEAD.
As long as we are dealing with deleted data anyway, maybe let's add this column?
PFW both patches.

Thanks!

Best regards, Andrey Borodin.

Attachment

Re: pgsql: Add functions to 'pageinspect' to inspect GiST indexes.

From
Peter Geoghegan
Date:
On Thu, Feb 11, 2021 at 9:22 PM Andrey Borodin <x4mmm@yandex-team.ru> wrote:
> Thanks, Peter! I agree that taking PageGetMaxOffsetNumber() seems
> incorrect for deleted page, because we set pd_lower for the deleted page.
> Also, there was an idea to add a column for LP_DEAD.
> As long as we are dealing with deleted data anyway, maybe let's add this column?
> PFW both patches.

I pushed both of your patches this evening.

Thanks!
-- 
Peter Geoghegan