| From: | Nathan Bossart <nathandbossart(at)gmail(dot)com> |
|---|---|
| To: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
| Cc: | Rahila Syed <rahilasyed90(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | pgindent versus struct members and typedefs |
| Date: | 2025-12-02 22:00:51 |
| Message-ID: | aS9hkwnkWf3dZIA_@nathan |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Mon, Dec 01, 2025 at 05:04:23PM -0600, Nathan Bossart wrote:
> On Tue, Dec 02, 2025 at 05:35:34AM +0800, Chao Li wrote:
>> ```
>> + else if (entry->type == DSMR_ENTRY_TYPE_DSH &&
>> + entry->dsh.dsa_handle !=DSA_HANDLE_INVALID)
>> ```
>>
>> Missing a white space after !=.
>
> I agree, but for some reason, pgindent insists on removing that space. I'm
> leaving that for another thread.
So, this seems to have something to do with the struct member having the
same name as a typedef. If I rename the member, pgindent adds the space as
expected. Interestingly, changing the != to a == also fixes the spacing.
There are a couple of other examples in the code:
src/backend/storage/ipc/dsm_registry.c: entry->dsh.dsa_handle !=DSA_HANDLE_INVALID)
src/backend/replication/logical/logicalfuncs.c: ctx->options.output_type !=OUTPUT_PLUGIN_TEXTUAL_OUTPUT)
src/bin/pg_basebackup/pg_basebackup.c: if (state.manifest_file !=NULL)
src/bin/pg_basebackup/pg_basebackup.c: state->manifest_file !=NULL)
src/bin/pg_basebackup/pg_basebackup.c: else if (state->manifest_file !=NULL)
I used the following command to find these:
grep -E "!=[A-Za-z]" ./* -rI
AFAICT this is a special case of the note added to pgindent's README by
commit c4133ec:
pgindent will mangle both declaration and definition of a C function whose
name matches a typedef. Currently the best workaround is to choose
non-conflicting names.
I tried to fix pgindent for a few, but the code is basically impenetrable.
I didn't find any fixes upstream [0], either. As noted above, we could
also fix it by avoiding the naming conflicts. However, I can't imagine
that's worth the churn, and I've already spent way too much time on this,
so IMHO the best thing to do here is nothing.
[0] https://github.com/freebsd/freebsd-src/tree/main/usr.bin/indent
--
nathan
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Peter Smith | 2025-12-02 22:39:02 | Re: POC: enable logical decoding when wal_level = 'replica' without a server restart |
| Previous Message | Florin Irion | 2025-12-02 21:11:39 | Re: [PATCH] pg_get_domain_ddl: DDL reconstruction function for CREATE DOMAIN statement |