Re: Fix Grammar in Buffer Lock Wait Message

From: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
To: Xuneng Zhou <xunengzhou(at)gmail(dot)com>
Cc: Guoqing Yang <yanggq1988(at)126(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Fix Grammar in Buffer Lock Wait Message
Date: 2026-08-06 07:29:38
Message-ID: CADBB9FD-906C-4B3E-B488-D377F4850819@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> On Jul 10, 2026, at 11:07, Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
>
> Hi Guoqing,
>
> On Wed, Jul 1, 2026 at 9:45 AM Guoqing Yang <yanggq1988(at)126(dot)com> wrote:
>>
>> Fix grammar in buffer lock wait message
>>
>> Correct the wait message from "Waiting to acquire a exclusive lock on a buffer"
>> to "Waiting to acquire an exclusive lock on a buffer".
>>
>> The word "exclusive" starts with a vowel sound, so the indefinite article
>> should be "an" instead of "a".
>
> This seems to be a typo. I asked Sol to check this kind of issue in
> the tree, and it found a bunch of them. Do you bother to do a further
> check? As John suggested, we better fix grammar issues wholesale[1].
>
> [1] https://www.postgresql.org/message-id/CANWCAZaZgQN54ccVheWd%3Dyg2KW_c1vTPB7hd0CXkqBNLD2-pDA%40mail.gmail.com
>
> --
> Regards,
> Xuneng Zhou
> HighGo Software Co., Ltd.
> <fix-indefinite-articles.patch><check_indefinite_articles.py>

Hi Xuneng,

Thanks for the thorough fixes.

I think Guoqing’s fix is a back-patch candidate for v19, as it was an oversight of "[fcb9c977] bufmgr: Implement buffer content locks independently of lwlocks".

So, I added your new findings to 0002, and I think they should be applied to master only. Although AI can help here, TBH, I think it would be better if English-speaking folks could review them. To make it easier for reviewers, here is a summary of all the changes in 0002:
```
event-trigger.sgml: a EventTriggerData structure -> an EventTriggerData structure
func-admin.sgml: an one-dimension array -> a one-dimensional array
libpq.sgml: a EXECUTE command -> an EXECUTE command
logical-replication.sgml: a update_missing conflict -> an update_missing conflict
alter_table.sgml: a inheritable constraint -> an inheritable constraint
pg_createsubscriber.sgml: a initial replication location -> an initial replication location
tidstore.c: a in-memory data structure -> an in-memory data structure
ginget.c: a ItemPointer -> an ItemPointer
heap.c: all functions in use a immutable -> all functions in use are immutable
publicationcmds.c: a ALL state -> an ALL state
execExpr.c: a EEOP_HASHED_SCALARARRAYOP step -> an EEOP_HASHED_SCALARARRAYOP step
execExpr.c: a EEOP_SCALARARRAYOP -> an EEOP_SCALARARRAYOP
execExpr.c: a EEOP_JSONEXPR_COERCION step -> an EEOP_JSONEXPR_COERCION step
execExprInterp.c: a EEOP_*_FETCHSOME operation -> an EEOP_*_FETCHSOME operation
hba.c: a AuthToken struct -> an AuthToken struct
parse_oper.c: a ObjectWithArgs node -> an ObjectWithArgs node
wait_event_names.txt: a IO -> I/O
wait_event_names.txt: a exclusive lock -> an exclusive lock
pg_dependencies.c: an dependency key -> a dependency key
uuid.c: an UNIX epoch timestamp -> a Unix epoch timestamp
uuid.c: an UUIDv7 -> a UUIDv7
queryenvironment.c: a Ephemeral Named Relation -> an Ephemeral Named Relation
aset.c: a AllocFreeListLink -> an AllocFreeListLink
aset.c: Obtain a AllocFreeListLink -> Obtain an AllocFreeListLink
astreamer_inject.c: Create a astreamer -> Create an astreamer
pg_restore.c: an utility -> a utility
astreamer_verify.c: processing for a astreamer_verify stream -> processing for an astreamer_verify stream
astreamer_verify.c: memory associated with a astreamer_verify stream -> memory associated with an astreamer_verify stream
astreamer_file.c: Create a astreamer that just writes data -> Create an astreamer that just writes data
astreamer_file.c: Create a astreamer that extracts an archive -> Create an astreamer that extracts an archive
astreamer_gzip.c: Create a astreamer that just compresses data -> Create an astreamer that just compresses data
astreamer_tar.c: Create a astreamer that can parse a stream -> Create an astreamer that can parse a stream
astreamer_tar.c: Create a astreamer that can generate a tar archive -> Create an astreamer that can generate a tar archive
astreamer_tar.c: If a ASTREAMER_MEMBER_HEADER chunk -> If an ASTREAMER_MEMBER_HEADER chunk
astreamer_tar.c: Create a astreamer that blindly adds two blocks -> Create an astreamer that blindly adds two blocks
relscan.h: it must act as a information what to scan for those workers -> to tell those workers what to scan
astreamer.h: passed to a astreamer -> passed to an astreamer
astreamer.h: A astreamer that does not -> An astreamer that does not
astreamer.h: callbacks for a astreamer -> callbacks for an astreamer
astreamer.h: Send some content to a astreamer -> Send some content to an astreamer
astreamer.h: Finalize a astreamer -> Finalize an astreamer
astreamer.h: Free a astreamer -> Free an astreamer
astreamer.h: implementing a astreamer -> implementing an astreamer
astreamer.h: implementing a astreamer -> implementing an astreamer
jsonb.h: an JB_FOBJECT -> a JB_FOBJECT
```

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

Attachment Content-Type Size
v2-0001-Fix-grammar-in-BUFFER_EXCLUSIVE-wait-event-descri.patch application/octet-stream 1.5 KB
v2-0002-Fix-assorted-grammar-errors-in-documentation-and-.patch application/octet-stream 25.7 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message solai v 2026-08-06 07:34:38 Re: explain plans for foreign servers
Previous Message ZizhuanLiu X-MAN 2026-08-06 07:25:04 Re: Fix var_eq_const: sum selectivity of all matching MCV entries instead of stopping at first match