Re: HOT - whats next ?

Поиск
Список
Период
Сортировка
От Simon Riggs
Тема Re: HOT - whats next ?
Дата
Msg-id 1173110596.3760.1939.camel@silverbirch.site
обсуждение исходный текст
Ответ на Re: HOT - whats next ?  (Bruce Momjian <bruce@momjian.us>)
Ответы Re: HOT - whats next ?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Fri, 2007-03-02 at 21:53 -0500, Bruce Momjian wrote:
> Simon Riggs wrote:
>  
> > It would also be very useful to have a version of pgstattuple that
> > worked with heaps, so test cases can be written that examine the header
> > fields, info flags etc. It would be useful to be able to specify the
> > basic behaviour in terms of explicit test cases.
> > 
> > Would those two approaches to test execution be desirable in the
> > regression tests?
> 
> Sure.

I've written some utility functions that will help us look inside heap
blocks to examine headers and the like. I'd like to add these to core
(not contrib) so we can write regression tests directly using them.

I'll post what I have now to -patches, under the title: Heap page
diagnostic/test functions (WIP). (I have extended the pgstattuple
contrib module, but thats not the eventual destination, I hope).


The first function reads a single block from a file, returning the
complete page as a bytea of length BLCKSZ. 
CREATE OR REPLACE FUNCTION bufpage_get_raw_page(text, int4)RETURNS bytea ...

We do this to ensure that we get a time consistent view of all data on
the page, rather than returning to it repeatedly to read items from it.
This is a similar idea to heapgetpage() for page-at-a-time scans, but we
may want to inspect all aspects of the page, not just visible tuples.

Returning a bytea means we can also dump that out as text easily, so
this is also a useful tool for retrieving the contents of damaged blocks
and emailing them to people. We can also save the page data in a table.

Other functions then work from the bytea version of the page.

-- A simple function for checking page header validityCREATE OR REPLACE FUNCTION
heap_raw_page_header_is_valid(bytea)RETURNSboolean ...
 

-- An SRF for showing the details of tuple headers on a pageCREATE OR REPLACE FUNCTION
heap_raw_page_tuple_headers(bytea)RETURNSSETOF heap_page_tuple_header_type ...
 

example output: select * from
heap_raw_page_tuple_headers(bufpage_get_raw_page('foo',6));
itemid | ok | len |  tctid  |  xmn  | cn |  xmx  | cx | cid | natts |
toid | info_flag_text
--------+----+-----+---------+-------+----+-------+----+-----+-------+------+----------------     1 | t  |  33 | (6,1)
| 51800 |    |     0 | i  |   0 |     2 |
 
0 | HEAP_UPDATED     2 | t  |  33 | (6,2)   |   602 | c  |     0 | i  |   0 |     2 |
0 |     3 | t  |  33 | (6,1)   |   602 | c  | 51800 |    |   0 |     2 |
0 |

cn = xmin hint bits, cx = xmax hint bits

Can I have some additional requests for features on this, so I can
submit as a patch to core? What else do we want?

Thanks,

--  Simon Riggs              EnterpriseDB   http://www.enterprisedb.com




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Aggressive freezing in lazy-vacuum
Следующее
От: "Pavan Deolasee"
Дата:
Сообщение: Re: Latest plans for Utilities with HOT