Dne 4.01.10 19:28, Alvaro Herrera napsal(a):
> Bruce Momjian escribió:
>
>> I considered that but realize that pg_migrator has to read
>> pg_controldata in both the old and new servers, meaning it would need
>> access to both C structures, and considering they both have the same
>> structure names, that would require some odd C tricks. Add to that you
>> don't know which version of Postgres you are migrating from/to during
>> compile and the idea of using C becomes even less attractive.
>
> However, keep in mind that this might not be the last time on which we
> will want to read something from a C struct, so perhaps it would be good
> to bite the bullet and write the odd tricks. Does it already have
> access (at compile time) to the old and new source trees?
I have some proof of concept when each control data struct version
version have one header file like pg_control_843.h and structure like
ControlFileData has name ControlFileData_843. The main pg_control.h
defines types without version like
typedef ControlFileData_843 ControlFileData;
I planed to do it for 8.5 but unfortunately no time :( commit fest is
too close.
Zdenek