Thread

Commits

  1. Fix the test 005_char_signedness.

  2. pg_upgrade: Preserve default char signedness value from old cluster.

  3. Add default_char_signedness field to ControlFileData.

  1. pgsql: pg_upgrade: Preserve default char signedness value from old clus

    Masahiko Sawada <msawada@postgresql.org> — 2025-02-21T18:20:37Z

    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
    
    Branch
    ------
    master
    
    Details
    -------
    https://git.postgresql.org/pg/commitdiff/a8238f87f980848c2d69c105555c4383e20e7670
    
    Modified Files
    --------------
    src/bin/pg_upgrade/controldata.c            | 44 ++++++++++++++++++-
    src/bin/pg_upgrade/pg_upgrade.c             | 28 +++++++++++++
    src/bin/pg_upgrade/pg_upgrade.h             |  6 +++
    src/bin/pg_upgrade/t/005_char_signedness.pl | 65 +++++++++++++++++++++++++++++
    4 files changed, 142 insertions(+), 1 deletion(-)
    
    
  2. Re: pgsql: pg_upgrade: Preserve default char signedness value from old clus

    Robert Haas <robertmhaas@gmail.com> — 2025-03-17T17:20:22Z

    On Fri, Feb 21, 2025 at 1:20 PM Masahiko Sawada <msawada@postgresql.org> wrote:
    > pg_upgrade: Preserve default char signedness value from old cluster.
    
    Hi,
    
    I noticed that after running 'meson test --suite setup --suite
    pg_upgrade', the file delete_old_cluster.sh is left behind in the
    source directory, which should not happen. Everything created for the
    tests should be created in the meson directories. I traced the problem
    down to 005_char_signedness.pl. I believe the problem is likely that
    other pg_upgrade TAP tests include this locution, whereas
    005_char_signedness.pl does not:
    
    # In a VPATH build, we'll be started in the source directory, but we want
    # to run pg_upgrade in the build directory so that any files generated finish
    # in it, like delete_old_cluster.{sh,bat}.
    chdir ${PostgreSQL::Test::Utils::tmp_check};
    
    Regards,
    
    -- 
    Robert Haas
    EDB: http://www.enterprisedb.com
    
    
    
    
  3. Re: pgsql: pg_upgrade: Preserve default char signedness value from old clus

    Masahiko Sawada <sawada.mshk@gmail.com> — 2025-03-17T22:01:43Z

    On Mon, Mar 17, 2025 at 10:20 AM Robert Haas <robertmhaas@gmail.com> wrote:
    >
    > On Fri, Feb 21, 2025 at 1:20 PM Masahiko Sawada <msawada@postgresql.org> wrote:
    > > pg_upgrade: Preserve default char signedness value from old cluster.
    >
    > Hi,
    >
    > I noticed that after running 'meson test --suite setup --suite
    > pg_upgrade', the file delete_old_cluster.sh is left behind in the
    > source directory, which should not happen. Everything created for the
    > tests should be created in the meson directories. I traced the problem
    > down to 005_char_signedness.pl. I believe the problem is likely that
    > other pg_upgrade TAP tests include this locution, whereas
    > 005_char_signedness.pl does not:
    >
    > # In a VPATH build, we'll be started in the source directory, but we want
    > # to run pg_upgrade in the build directory so that any files generated finish
    > # in it, like delete_old_cluster.{sh,bat}.
    > chdir ${PostgreSQL::Test::Utils::tmp_check};
    
    Thank you for the report.
    
    I've confirmed the issue and attached a patch to fix it.
    
    Regards,
    
    -- 
    Masahiko Sawada
    Amazon Web Services: https://aws.amazon.com
    
  4. Re: pgsql: pg_upgrade: Preserve default char signedness value from old clus

    Robert Haas <robertmhaas@gmail.com> — 2025-03-18T03:02:14Z

    On Mon, Mar 17, 2025 at 6:02 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
    > I've confirmed the issue and attached a patch to fix it.
    
    Cool. The commit message refers to 003_char_signedness, but the test
    name is 005, not 003.
    
    -- 
    Robert Haas
    EDB: http://www.enterprisedb.com
    
    
    
    
  5. Re: pgsql: pg_upgrade: Preserve default char signedness value from old clus

    Masahiko Sawada <sawada.mshk@gmail.com> — 2025-03-18T04:35:43Z

    On Mon, Mar 17, 2025 at 8:02 PM Robert Haas <robertmhaas@gmail.com> wrote:
    >
    > On Mon, Mar 17, 2025 at 6:02 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
    > > I've confirmed the issue and attached a patch to fix it.
    >
    > Cool. The commit message refers to 003_char_signedness, but the test
    > name is 005, not 003.
    
    Thank you for reviewing the patch. I've pushed the patch after fixing it.
    
    
    Regards,
    
    --
    Masahiko Sawada
    Amazon Web Services: https://aws.amazon.com
    
    
    
    
  6. Re: pgsql: pg_upgrade: Preserve default char signedness value from old clus

    Robert Haas <robertmhaas@gmail.com> — 2025-03-18T12:28:25Z

    On Tue, Mar 18, 2025 at 12:36 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
    > > Cool. The commit message refers to 003_char_signedness, but the test
    > > name is 005, not 003.
    >
    > Thank you for reviewing the patch. I've pushed the patch after fixing it.
    
    Thanks for taking care of it (and so quickly!).
    
    -- 
    Robert Haas
    EDB: http://www.enterprisedb.com