Bruce Momjian <bruce@xxxxxxxxxx> writes: > On Thu, Mar 11, 2021 at 10:34:42AM +0000, Paul Smith wrote: >> Just "for kicks" I decided to try to use pg_upgrade to do it (on a test >> database). The documentation seems to suggest that it won't work >> "pg_upgrade does its best to make sure the old and new clusters are >> binary-compatible, e.g., by checking for compatible compile-time settings, >> *including 32/64-bit binaries*." >> To my surprise, it seemed to work absolutely fine. I can start the new 64 bit >> cluster, and a quick check shows everything working OK. Yeah, it will (probably) work as long as maxAlign is the same. Since on Intel hardware that's pretty nearly a free choice by the compiler, it doesn't surprise me if 32- and 64-bit Windows builds use the same value. > Well, pg_upgrade checks all the pg_controldata fields that would affect > compatibility, so I guess it does work. pg_upgrade only really cares > about the format of the database files, not the size of pointers used by > the binary. After some digging, I found where pg_upgrade checks that the clusters' pg_control.maxAlign settings match. However, it looks to me like pg_control.floatFormat is never checked, which is a problem in theory though I'm not sure there's any issue in practice, seeing how universal IEEE floats are. Perhaps more critical, it's not apparent to me where or how pg_upgrade verifies that endianness is the same. regards, tom lane