Re: pgindent weirdness

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: pgindent weirdness
Date: 2011-04-20 15:15:55
Message-ID: 4DAEF8AB.5030103@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 04/20/2011 05:48 AM, Bruce Momjian wrote:
> Robert Haas wrote:
>> pgindent seems to have muffed it when it comes to BulkInsertStateData:
>>
>> diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c
>> index 2849992..72a69e5 100644
>> --- a/src/backend/access/heap/hio.c
>> +++ b/src/backend/access/heap/hio.c
>> @@ -150,7 +150,7 @@ ReadBufferBI(Relation relation, BlockNumber targetBlock,
>> Buffer
>> RelationGetBufferForTuple(Relation relation, Size len,
>> Buffer otherBuffer,
>> int options,
>> - struct
>> BulkInsertStateData *bistate)
>> + struct
>> BulkInsertStateData * bistate)
>> {
>> bool use_fsm = !(options& HEAP_INSERT_SKIP_FSM);
>> Buffer buffer = InvalidBuffer;
>>
>> Not sure what happened here exactly...
> BulkInsertStateData is not listed in the typedef list supplied by
> Andrew; see src/tools/pgindent/typedefs.list. CC'ing him. This might
> be because the typdef is listed in two files:
>
> /*
> * state for bulk inserts --- private to heapam.c and hio.c
> *
> * If current_buf isn't InvalidBuffer, then we are holding an extra pin
> * on that buffer.
> *
> * "typedef struct BulkInsertStateData *BulkInsertState" is in heapam.h
> */
>
>

It's tagged as a structure type by objdump, but not as a typedef:

<1><40055>: Abbrev Number: 4 (DW_TAG_typedef)
<40056> DW_AT_name : (indirect string, offset: 0x6bf6):
BulkInsertState
<4005a> DW_AT_decl_file : 30
<4005b> DW_AT_decl_line : 32
<4005c> DW_AT_type : <0x40060>
<1><40060>: Abbrev Number: 7 (DW_TAG_pointer_type)
<40061> DW_AT_byte_size : 8
<40062> DW_AT_type : <0x40066>
<1><40066>: Abbrev Number: 13 (DW_TAG_structure_type)
<40067> DW_AT_name : (indirect string, offset: 0x66bf):
BulkInsertStateData
<4006b> DW_AT_byte_size : 16
<4006c> DW_AT_decl_file : 31
<4006d> DW_AT_decl_line : 30
<4006e> DW_AT_sibling : <0x4008b>

I can pull out those too if you want them in the list, but it would
possibly add a LOT of names to the list.

I did carefully warn you about the need to check the effects of the
changes when I committed the new list.

It looks like quite a few of the deletions come into this category, for
example just looking at the diff here
<https://github.com/postgres/postgres/commit/fe1438da8aa8a45f2cee816eb54841f97d3b2f22#src/tools/pgindent/typedefs.list>
I see AggHashEntryData, AggStatePerAggData, AllocBlockData, and
AllocChunkData from among the first few that were deleted and all are in
the same category.

I wondered if this is some sort of optimizer effect, but building with
-O0 doesn't seem to affect it.

Note that the list we're using is a composite of dumps from four
platforms: Linux, FreeBSD, MinGW and Cygwin. What they have in common is
that they are all using gcc, and a fairly modern version of gcc at that,
and fairly modern versions of objdump too.

Attached is a partial list of new candidate symbols if we want to pick
up these extras.

cheers

andrew

Attachment Content-Type Size
structsymbols text/plain 3.8 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2011-04-20 15:43:48 Re: pgindent weirdness
Previous Message Tom Lane 2011-04-20 15:15:06 Re: time-delayed standbys