Re: Show various offset arrays for heap WAL records
От | Melanie Plageman |
---|---|
Тема | Re: Show various offset arrays for heap WAL records |
Дата | |
Msg-id | CAAKRu_Ywd6Vfg9x5gDD11Xvqnnh8fkBpk+O1SmYUF-BGaSK63A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Show various offset arrays for heap WAL records (Peter Geoghegan <pg@bowt.ie>) |
Ответы |
Re: Show various offset arrays for heap WAL records
|
Список | pgsql-hackers |
On Tue, Jan 31, 2023 at 5:48 PM Peter Geoghegan <pg@bowt.ie> wrote: > > On Tue, Jan 31, 2023 at 1:52 PM Peter Geoghegan <pg@bowt.ie> wrote: > > > I would also like to see functions like XLogRecGetBlockRefInfo() pass > > > something more useful than a stringinfo buffer so that we could easily > > > extract out the relfilenode in pgwalinspect. > > > > That does seem particularly important. It's a pain to do this from > > SQL. In general I'm okay with focussing on pg_walinspect over > > pg_waldump, since it'll become more important over time. Obviously > > pg_waldump needs to still work, but I think it's okay to care less > > about pg_waldump usability. > > I just realized why you mentioned XLogRecGetBlockRefInfo() -- it > probably shouldn't even be used by pg_walinspect at all (just by > pg_waldump). Using something like XLogRecGetBlockRefInfo() within > pg_walinspect misses out on the opportunity to output information in a > more descriptive tuple format, with real data types. It's not just the > relfilenode, either -- it's the block numbers themselves. And the fork > number. > > In other words, I suspect that this is out of scope for this patch, > strictly speaking. We simply shouldn't be using > XLogRecGetBlockRefInfo() in pg_walinspect in the first place. Rather, > pg_walinspect should be calling some other function that ultimately > allows the user to work with (say) an array of int8 from SQL for the > block numbers. There is no great reason not to, AFAICT, since this > information is completely generic -- it's not like the rmgr-specific > output from GetRmgr(), where fine grained type information is just a > nice-to-have, with usability issues of its own (on account of the > details being record type specific). Something like the attached? start_lsn | 0/19823390 end_lsn | 0/19824360 prev_lsn | 0/19821358 xid | 1355 resource_manager | Heap record_type | UPDATE record_length | 4021 main_data_length | 14 fpi_length | 3948 description | off 11 xmax 1355 flags 0x00 ; new off 109 xmax 0 block_ref | [0:1][0:8]={{0,1663,5,17033,0,442,460,4244,0},{1,1663,5,17033,0,0,0,0,0}} It is a bit annoying not to have information about what each block_ref item in the array represents (previously in the string), so maybe the format in the attached shouldn't be a replacement for what is already displayed by pg_get_wal_records_info() and friends. It could instead be a new function which returns information in this format -- perhaps tuples with separate columns for each labeled block ref field denormalized to repeat the wal record info for every block? The one piece of information I didn't include in the new block_ref columns is the compression type (since it is a string). Since I used the forknum value instead of the forknum name, maybe it is defensible to also provide a documented int value for the compression type and make that an int too? - Melanie
Вложения
В списке pgsql-hackers по дате отправления: