Обсуждение: pageinspect support for SpGiST

Поиск
Список
Период
Сортировка

pageinspect support for SpGiST

От
Kirill Reshke
Дата:
Hi hackers!

I am currently working for amcheck & pageinspect support for SpGiST indices.
Here is a patch implementing the pageinspect part.

My current design is two functions, which are

* spgist_page_opaque_info - akin to gin/gist opaque info functions.
* spgist_page_items - function that returns information about tuples
on the SpGiST page. Currently this works only for LEAF pages, Internal
pages to be supported.

Following "Desirability -> Design -> Implement -> Test -> Review ->
Commit" developing process, posting v1 patch with PoC and looking for
Desirability/Design feedback.

PFA (WIP) v1.

-- 
Best regards,
Kirill Reshke

Вложения

Re: pageinspect support for SpGiST

От
Kirill Reshke
Дата:
On Sat, 10 Jan 2026 at 23:05, I wrote:
> Currently this works only for LEAF pages, Internal pages to be supported.


I have added the spgist_innerpage_items function to address that.
spgist_page_items renamed to spgist_leafpage_items

PFA v2



-- 
Best regards,
Kirill Reshke

Вложения

Re: pageinspect support for SpGiST

От
Andrey Borodin
Дата:

> On 11 Jan 2026, at 16:32, Kirill Reshke <reshkekirill@gmail.com> wrote:
>
> PFA v2

Nice feature, it would be good to have in. Some nits:

1. File header is wrong — says "gistfuncs.c" and "GiST"
2. Traces of GiST are everywhere, in function names, in error messages, etc
3. spgist_metapage_items — wrong errdetail for magic number check ("Expected special size")
4. "values[6] = InvalidTransactionId;" more conventional would be "TransactionIdGetDatum(InvalidTransactionId)"
5. spgist_innerpage_items — has_datums used uninitialized in SPGIST_DEAD+ cases
6. spgist_innerpage_items — doesn't output prefix/node data, is it by design?
7. you use index_deform_tuple_internal() instead of spgDeformLeafTuple(), I'm not sure that's conventional also
8. "values[2] = UInt32GetDatum(leafTuple->size);" must be "values[2] = UInt16GetDatum(leafTuple->size);" according to
"OUTsize smallint,"? 
9. "OUT blkno smallint," also raises sizing questions

Thanks for working on this!


Best regards, Andrey Borodin.