| From: | Kirill Reshke <reshkekirill(at)gmail(dot)com> |
|---|---|
| To: | Aleksander Alekseev <aleksander(at)tigerdata(dot)com> |
| Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: Enhance btree's pageinspect |
| Date: | 2026-01-19 12:08:58 |
| Message-ID: | CALdSSPgkdXew+7tYEXvpmT8iXQkTsQh_Q7n7FuOpTMbHERkKvg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Mon, 19 Jan 2026 at 16:52, Aleksander Alekseev
<aleksander(at)tigerdata(dot)com> wrote:
>
> Hi Kirill,
>
> > Please find two patches that would be very helpful to my own use
> > cases, and I believe they are universally useful. v1-0001 provides
> > pretty-print functionality for bt_page_items().
> > This makes much easier to get which exactly data page contains
>
> I did a quick look at 0001. Here are my two cents.
>
> If you are changing bt_page_items() you should also update the
> documentation [1] and cover the new functionality with tests.
>
> Adding a new required argument to the existing function doesn't strike
> me as a great idea. That's an API change which is arguably not that
> necessary. On top of that, pretty-printing potentially corrupted data
> may cause the backend to crash. IMO if we are going to do this the API
> should be very clear about the danger. I would prefer having a
> separate function, e.g. bt_page_items_unsafe. Or maybe this is
> something better done with an external tool like pg_filedump.
>
> Just thinking out loud. I wonder what other people think.
>
> [1]: https://www.postgresql.org/docs/current/pageinspect.html
>
> --
> Best regards,
> Aleksander Alekseev
Hi!
Thank you for looking into this!
Looks like I have posted an old version of my patch, which has no
default for pretty_print argument. This also makes tests to fail...
Anyway, I have borrowed this idea from
gist_page_items/gist_page_items_bytea, where the first function does
pretty print.
For btree, we have bt_page_items which returns bytea... So my
implementation choice was to just add a new parameter.
Also, gist_page_items documentation doest seem to care about corrupted
pages. Maybe there is some rule that you always use page inspection at
your own risk?
I will post an updated patch soon. If creating separate functions to
do pretty-print, bt_page_items_unsafe does not immediately strike me
as a good choice...
--
Best regards,
Kirill Reshke
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bertrand Drouvot | 2026-01-19 12:17:06 | Re: Flush some statistics within running transactions |
| Previous Message | Shruthi Gowda | 2026-01-19 12:08:29 | Re: [BUG] CRASH: ECPGprepared_statement() and ECPGdeallocate_all() when connection is NULL |