pg_upgrade: Preserve default char signedness value from old cluster.

Masahiko Sawada <msawada@postgresql.org>

Commit: a8238f87f980848c2d69c105555c4383e20e7670
Author: Masahiko Sawada <msawada@postgresql.org>
Date: 2025-02-21T18:19:40Z
Releases: 18.0
pg_upgrade: Preserve default char signedness value from old cluster.

Commit 44fe30fdab6 introduced the 'default_char_signedness' field in
controlfile. Newly created database clusters always set this field to
'signed'.

This change ensures that pg_upgrade updates the
'default_char_signedness' to 'unsigned' if the source database cluster
has signedness=false. For source clusters from v17 or earlier, which
lack the 'default_char_signedness' information, pg_upgrade assumes the
source cluster was initialized on the same platform where pg_upgrade
is running. It then sets the 'default_char_signedness' value according
to the current platform's default character signedness.

Reviewed-by: Noah Misch <noah@leadboat.com>
Discussion: https://postgr.es/m/CB11ADBC-0C3F-4FE0-A678-666EE80CBB07%40amazon.com

Files

Discussion