Re: [HACKERS] [PATCH] pageinspect function to decode infomasks

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Craig Ringer <craig@2ndquadrant.com>, Ashutosh Sharma <ashu.coek88@gmail.com>, Julien Rouhaud <rjuju123@gmail.com>, Peter Geoghegan <pg@bowt.ie>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, Abhijit Menon-Sen <ams@2ndquadrant.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Pavan Deolasee <pavan.deolasee@2ndquadrant.com>
Date: 2019-09-16T14:11:06Z
Lists: pgsql-hackers
On 2019-Sep-16, Michael Paquier wrote:

> On Mon, Sep 16, 2019 at 11:46:16AM +0530, Amit Kapila wrote:
> > I don't see much use of separating information for infomask and infomask2.
> 
> Okay, using two separate columns leads to the attached.  Any thoughts?
> This also includes a fix for cases with IS_LOCKED_ONLY and UPGRADED.

I like how it looks in the expected test output.  Didn't review the code
closely, but it looks reasonable in a quick glance.

Whitespace nitpick: pgindent will do something very annoying with this:

> +		PG_RETURN_DATUM(
> +			HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls)));

I suggest to split the line in the first comma, not in the parens.

> +      Combined flags include for example <literal>HEAP_XMIN_FROZEN</literal>
> +      which is defined as a set of <literal>HEAP_XMIN_COMMITTED</literal>
> +      and <literal>HEAP_XMIN_INVALID</literal>.

I suggest something like "Combined flags are displayed for source-level
macros that take into account the value of more than one raw bit, such
as HEAP_XMIN_FROZEN".  (We probably don't want an exhaustive list, which
becomes annoying to maintain; users can refer to the source file.)

There's a typo "bites" in a comment.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Commits

  1. Redesign pageinspect function printing infomask bits

  2. Add to pageinspect function to make t_infomask/t_infomask2 human-readable

  3. Improve documentation of pageinspect

  4. Improve pageinspect module