Re: A assert failure when initdb with track_commit_timestamp=on - Mailing list pgsql-hackers

From Tom Lane
Subject Re: A assert failure when initdb with track_commit_timestamp=on
Date
Msg-id 9093.1751736193@sss.pgh.pa.us
Whole thread Raw
In response to Re: A assert failure when initdb with track_commit_timestamp=on  (Fujii Masao <masao.fujii@oss.nttdata.com>)
Responses Re: A assert failure when initdb with track_commit_timestamp=on
List pgsql-hackers
Fujii Masao <masao.fujii@oss.nttdata.com> writes:
> On 2025/07/05 2:17, Tom Lane wrote:
>> Oh, good point.  But there doesn't seem to be any ill effect from
>> making BootstrapModeMain set BootstrapProcessing a bit earlier.

> Maybe. But I noticed that your patch also moves the line "IgnoreSystemIndexes = true;"
> earlier. Why did you make this change?

It just seemed to go with the bootstrap-mode setting.  But your
example shows differently:

> This could cause initdb to fail with a PANIC error when run with ignore_system_indexes=off,
> like this:
>      $ initdb -D data -c ignore_system_indexes=off
>      ...
>      FATAL:  could not open relation with OID 2703
>      PANIC:  cannot abort transaction 1, it was already committed

> So perhaps "IgnoreSystemIndexes = true;" should be placed after GUCs are processed?

Yeah, we should do it like that (and probably also have a comment...)

> Or GUC ignore_system_indexes also should be treated in the same way
> as transaction_timeout?

Yes, I'd say we ought to mark that GUC as don't-accept-in-bootstrap
too.  I've not done any research about what other GUCs can break
initdb, but now I'm starting to suspect there are several.

BTW, I now realize that this is only an issue starting from v16.
Before that initdb didn't have a -c switch, so there was not a
way for people to shove random settings into it.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Re: A assert failure when initdb with track_commit_timestamp=on
Next
From: Tom Lane
Date:
Subject: Re: [PATCH] initdb: Treat empty -U argument as unset username