Re: CHECKPOINT unlogged data

Dilip Kumar <dilipbalaut@gmail.com>

From: Dilip Kumar <dilipbalaut@gmail.com>
To: Fujii Masao <masao.fujii@oss.nttdata.com>
Cc: Nathan Bossart <nathandbossart@gmail.com>, Christoph Berg <myon@debian.org>, Laurenz Albe <laurenz.albe@cybertec.at>, Andres Freund <andres@anarazel.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-07-10T05:04:28Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add FLUSH_UNLOGGED option to CHECKPOINT command.

  2. Add MODE option to CHECKPOINT command.

  3. Add option list to CHECKPOINT command.

  4. Rename CHECKPOINT_FLUSH_ALL to CHECKPOINT_FLUSH_UNLOGGED.

  5. Rename CHECKPOINT_IMMEDIATE to CHECKPOINT_FAST.

On Thu, Jul 10, 2025 at 9:55 AM Dilip Kumar <dilipbalaut@gmail.com> wrote:
>
> On Thu, Jul 10, 2025 at 9:31 AM Fujii Masao <masao.fujii@oss.nttdata.com> wrote:
> >
> >
> >
> > On 2025/07/10 4:26, Nathan Bossart wrote:
> > > Here is what I have staged for commit, which I'm planning to do on Friday.
> >
> > Thanks for updating the patches!
> >
> > Regarding the 0005 patch:
> >
> > -                       COMPLETE_WITH("MODE");
> > +                       COMPLETE_WITH("MODE, FLUSH_UNLOGGED");
> >
> > Shouldn't that be:
> >
> >      COMPLETE_WITH("MODE", "FLUSH_UNLOGGED");
> >
> > IOW, the two options should be separate strings, so it needs
> > double quotes around each.
>
> I agree that it makes more sense to treat them as 2 separate strings.

I was just playing around with the wrong mode seems error code is not
correct, see below example

postgres[906701]=# CHECKPOINT ( MODE wrong);

2025-07-10 05:00:41.644 UTC [906701] ERROR:  unrecognized MODE option
"mode" at character 14

2025-07-10 05:00:41.644 UTC [906701] STATEMENT:  CHECKPOINT ( MODE wrong);

ERROR:  42601: unrecognized MODE option "mode"

LINE 1: CHECKPOINT ( MODE wrong);

IMHO the error should be "unrecognized MODE option "wrong" not the "mode" ?

While looking at the code it seems problem is here instead if
'opt->defname' we should use 'mode' variable.

+ else if (strcmp(mode, "fast") != 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("unrecognized MODE option \"%s\"", opt->defname),
+ parser_errposition(pstate, opt->location)));


-- 
Regards,
Dilip Kumar
Google