On 2021-01-12 14:49, Heikki Linnakangas wrote:
I suggest calling BuildIndexValueDescription() from your own custom
debug instrumentation code.
Thanks for the hint, Peter!
This function does exactly what I want to do. But I have no Relation inside
gist_page_items(bytea) function... probably, I'll add gist_page_items(relname,
blockno) overload to fetch keys.
PFA patch with implementation.
I did a bit of cleanup on the function signature. The .sql script
claimed that gist_page_items() took bytea as argument, but in reality it
was a relation name, as text. I changed it so that it takes a page image
as argument, instead of reading the block straight from the index.
Mainly to make it consistent with brin_page_items(), if it wasn't for
that precedence I might've gone either way on it.
I noticed this patch while working on another patch for pageinspect [0],
and this one appears to introduce a problem similar to the one the other
patch attempts to fix: The "itemlen" output parameters are declared to
be of type smallint, but the underlying C data is of type uint16
(OffsetNumber). I don't know the details of gist enough to determine
whether overflow is possible here. If not, perhaps a check or at least
a comment would be useful. Otherwise, these parameters should be of
type int in SQL.
[0]:
https://www.postgresql.org/message-id/09e2dd82-4eb6-bba1-271a-d2b58bf6c...@enterprisedb.com