postgresql.conf.sample tab width

Started by Nathan Bossart5 months ago9 messageshackers
Jump to latest
#1Nathan Bossart
nathandbossart@gmail.com

I noticed that GitHub is using 4-space tabs for this file [0]https://github.com/postgres/postgres/blob/master/src/backend/utils/misc/postgresql.conf.sample, presumably
due to this [1]https://github.blog/changelog/2025-08-07-default-tab-size-changed-from-eight-to-four/ recent change. I'm not aware of an official policy for
this file, but it seems to be written for 8-space tabs.

One way to fix this is to set our default tab width to 8 in
.gitattributes/.editorconfig (see attached patch). AFAICT that doesn't
affect source code files. We could also add a special rule for
postgresql.conf.sample, or we could even convert it to 4-space tabs. Any
druthers?

[0]: https://github.com/postgres/postgres/blob/master/src/backend/utils/misc/postgresql.conf.sample
[1]: https://github.blog/changelog/2025-08-07-default-tab-size-changed-from-eight-to-four/

--
nathan

Attachments:

v1-0001-Change-default-tab-width-to-8.patchtext/plain; charset=us-asciiDownload+2-3
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Nathan Bossart (#1)
Re: postgresql.conf.sample tab width

Nathan Bossart <nathandbossart@gmail.com> writes:

I noticed that GitHub is using 4-space tabs for this file [0], presumably
due to this [1] recent change. I'm not aware of an official policy for
this file, but it seems to be written for 8-space tabs.

One way to fix this is to set our default tab width to 8 in
.gitattributes/.editorconfig (see attached patch). AFAICT that doesn't
affect source code files. We could also add a special rule for
postgresql.conf.sample, or we could even convert it to 4-space tabs. Any
druthers?

We've been around on this topic before. It's hard for us to deal with
8-space tabs within our repo, but we should expect that users who are
editing their postgresql.conf files are probably going to be using
8-space tabs.

I seem to recall a proposal that the best fix is to not use tabs
at all in postgresql.conf.sample. That seems like a good way out
to me. I think we could fix .gitattributes so that "git diff --check"
would verify no tabs, but I've not looked into details.

regards, tom lane

#3Nathan Bossart
nathandbossart@gmail.com
In reply to: Tom Lane (#2)
Re: postgresql.conf.sample tab width

On Fri, Nov 14, 2025 at 03:25:15PM -0500, Tom Lane wrote:

I seem to recall a proposal that the best fix is to not use tabs
at all in postgresql.conf.sample. That seems like a good way out
to me. I think we could fix .gitattributes so that "git diff --check"
would verify no tabs, but I've not looked into details.

I don't see a way in .gitattributes to check for _any_ tabs in a file, just
for beginning-of-line indentation with tabs. But it's easy enough to add a
check in the TAP test.

--
nathan

Attachments:

v2-0001-Convert-tabs-to-spaces-in-postgresql.conf.sample.patchtext/plain; charset=us-asciiDownload+510-488
#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Nathan Bossart (#3)
Re: postgresql.conf.sample tab width

Nathan Bossart <nathandbossart@gmail.com> writes:

I don't see a way in .gitattributes to check for _any_ tabs in a file, just
for beginning-of-line indentation with tabs. But it's easy enough to add a
check in the TAP test.

Works for me. Do we need any special .gitattributes for the file
at all, if we're relying on the TAP test to catch this?

regards, tom lane

#5Nathan Bossart
nathandbossart@gmail.com
In reply to: Tom Lane (#4)
Re: postgresql.conf.sample tab width

On Fri, Nov 14, 2025 at 04:34:08PM -0500, Tom Lane wrote:

Works for me. Do we need any special .gitattributes for the file
at all, if we're relying on the TAP test to catch this?

We'd at least need -whitespace (I think), but I figured we might as well
highlight beginning-of-line tabs and trailing whitespace in diffs, too.
The TAP test wouldn't catch the latter.

--
nathan

#6Nathan Bossart
nathandbossart@gmail.com
In reply to: Nathan Bossart (#5)
Re: postgresql.conf.sample tab width

Here is a rebased patch set. Notably, I've split it into three pieces.
I'm planning to add 0002 to .git-blame-ignore-revs, as testing indicates
this preserves the blame history reasonably well.

--
nathan

Attachments:

v3-0001-Update-.editorconfig-and-.gitattributes-for-postg.patchtext/plain; charset=us-asciiDownload+7-1
v3-0002-Switch-from-tabs-to-spaces-in-postgresql.conf.sam.patchtext/plain; charset=us-asciiDownload+488-489
v3-0003-Check-for-tabs-in-postgresql.conf.sample.patchtext/plain; charset=us-asciiDownload+14-1
#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Nathan Bossart (#6)
Re: postgresql.conf.sample tab width

Nathan Bossart <nathandbossart@gmail.com> writes:

Here is a rebased patch set. Notably, I've split it into three pieces.
I'm planning to add 0002 to .git-blame-ignore-revs, as testing indicates
this preserves the blame history reasonably well.

Good idea.

regards, tom lane

#8Chao Li
li.evan.chao@gmail.com
In reply to: Nathan Bossart (#6)
Re: postgresql.conf.sample tab width

Hi Nathan,

I just reviewed the patch. Looks to me the correct three-commit split:

0001 updates tooling/configure so that 0002 will not introduce formatting violation
0002 makes large formatting rewrite (tab->white spaces), and so that the commit needs to be added to .git-blace-ignore-revs
0003 adds CI enforcement so that no future patches to reintroduce tabs

A tiny comment about a typo in 0003’s commit message:
```
The previous commit updated this file to use tabs instead of
spaces.
```

Should be “use spaces instead of tabs”.

On Nov 18, 2025, at 02:50, Nathan Bossart <nathandbossart@gmail.com> wrote:

Here is a rebased patch set. Notably, I've split it into three pieces.
I'm planning to add 0002 to .git-blame-ignore-revs, as testing indicates
this preserves the blame history reasonably well.

--
nathan
<v3-0001-Update-.editorconfig-and-.gitattributes-for-postg.patch><v3-0002-Switch-from-tabs-to-spaces-in-postgresql.conf.sam.patch><v3-0003-Check-for-tabs-in-postgresql.conf.sample.patch>

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

#9Nathan Bossart
nathandbossart@gmail.com
In reply to: Chao Li (#8)
Re: postgresql.conf.sample tab width

On Tue, Nov 18, 2025 at 10:25:38AM +0800, Chao Li wrote:

I just reviewed the patch. Looks to me the correct three-commit split:

Committed, thanks for reviewing.

--
nathan