Re: [PATCH] Pageinspect - add functions on GIN and GiST indexes from gevel

From: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>
To: Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru>, Alexey Chernyshov <a(dot)chernyshov(at)postgrespro(dot)ru>
Cc: PostgreSQL-Dev <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [PATCH] Pageinspect - add functions on GIN and GiST indexes from gevel
Date: 2017-09-07 22:08:52
Message-ID: 2514c060-717e-6fb9-981c-bf1344174da5@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 07/21/2017 03:40 PM, Alexander Korotkov wrote:
> Hi, Alexey!
>
> On Fri, Jul 21, 2017 at 3:05 PM, Alexey Chernyshov
> <a(dot)chernyshov(at)postgrespro(dot)ru <mailto:a(dot)chernyshov(at)postgrespro(dot)ru>> wrote:
>
> the following patch transfers functionality from gevel module
> (http://www.sai.msu.su/~megera/wiki/Gevel
> <http://www.sai.msu.su/~megera/wiki/Gevel>) which provides functions for
> analyzing GIN and GiST indexes to pageinspect. Gevel was originally
> designed by Oleg Bartunov, and Teodor Sigaev for developers of GiST and
> GIN indexes.
>
>
> It's very good that you've picked up this work! pageinspect is lacking
> of this functionality.
>
> Functions added:
> - gist_stat(text) - shows statistics on GiST Tree
> - gist_tree(text) - shows GiST tree
> - gist_tree(text, int4) - shows GiST tree up to MAXLEVEL
> - gist_print(text) - prints objects stored in GiST tree
> - spgist_stat(text) - shows statistics on SP-GiST
> - spgist_print(text) - prints objects stored in index
> - gin_value_count() - originally gin_stat(text) - prints estimated
> counts
> for index values
> - gin_stats() - originally gin_statpage(text) - shows statistics
> - gin_count_estimate(text, tsquery) - shows number of indexed rows
> matched
> query
>
> Tests also transferred, docs for new functions are added. I run pgindent
> over the code, but the result is different from those I expected, so
> I leave
> pgindented one.
> The patch is applicable to the commit
> 866f4a7c210857aa342bf901558d170325094dde.
>
>
> As we can see, gevel contains functions which analyze the whole index.
> pageinspect is written in another manner: it gives you functionality to
> analyze individual pages, tuples and so on.
> Thus, we probably shouldn't try to move gevel functions to pageinspect
> "as is". They should be rewritten in more granular manner as well as
> other pageinspact functions are. Any other opinions?
>

I agree with Alexander that pageinspect is written in a very different
way - as the extension name suggests, it's used to inspect pages. The
proposed patch uses a very different approach, reading the whole index,
not individual pages. Why should it be part of pageinspect?

For example we have pgstattuple extension, which seems like a better
match. Or just create a new extension - if the code is valuable, surely
we can live one more extension instead of smuggling it in inside
pageinspect.

regards

--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas Munro 2017-09-07 22:24:11 Re: Moving relation extension locks out of heavyweight lock manager
Previous Message Magnus Hagander 2017-09-07 21:49:59 Re: GnuTLS support