Re: Proposal: manipulating pg_control file from Perl

From: Aleksander Alekseev <aleksander(at)timescale(dot)com>
To: PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
Cc: Dagfinn Ilmari Mannsåker <ilmari(at)ilmari(dot)org>
Subject: Re: Proposal: manipulating pg_control file from Perl
Date: 2025-03-14 13:50:41
Message-ID: CAJ7c6TPGPNbyb6h5P-aKDm0uYWrXKODt-QpJ6eRrHB2Ng_RevQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Dagfinn,

> Notwitstanding Tom's objections, these are not reasons for not being
> able to manipulate these values from Perl. The `i` and `I` formats for
> pack/unpack (see https://perldoc.perl.org/functions/pack) use what the C
> compiler calls `int`, in terms of both endianness and size.
>
> > For named reasons, manipulating pg_upgrade from Perl is impractical,
> > considering the number of environments we support.
> >
> > I see two possible solutions:
> >
> > 1) Provide a tool written in C that allows changing pg_control, e.g.
> > `pg_writecontoldata` or maybe a flat like `pg_controldata -w`. The
> > tool can be executed from Perl, so it shouldn't know about
> > sizeof(int), alignment and endiness.
>
> 1.5) Use Perl's pack/unpack functions, which are explicitly desgined for
> exactly this use case.

Thanks for your reply.

It is my understanding that Perl is not extremely aware of alignment.
For instance if I want to modify the checksum of the file and the
offset of the checksum is let's say 200 bytes on one platform, 204 on
another and 208 on a third, pack/unpack will not help me.

Or did I miss something?

--
Best regards,
Aleksander Alekseev

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2025-03-14 13:55:53 Re: Optimizing FastPathTransferRelationLocks()
Previous Message Evgeny 2025-03-14 13:43:31 Re: Elimination of the repetitive code at the SLRU bootstrap functions.