Re: Proposal: manipulating pg_control file from Perl
От | Aleksander Alekseev |
---|---|
Тема | Re: Proposal: manipulating pg_control file from Perl |
Дата | |
Msg-id | CAJ7c6TPGPNbyb6h5P-aKDm0uYWrXKODt-QpJ6eRrHB2Ng_RevQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Proposal: manipulating pg_control file from Perl (Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>) |
Список | 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
В списке pgsql-hackers по дате отправления: