On Fri, Jul 20, 2007 at 10:32:35AM -0400, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
> > Tom Lane wrote:
> >> Anyway, we detect this directly based on the C compiler's behavior,
> >> and you can't argue with the compiler about it. Whatever it's
> >> doing is right by definition.
>
> > Perhaps Pavan is referring to what is hardcoded in pg_config.h.win32
> > which is used for MSVC builds (but not for MinGW builds, IIRC), in
> > which case the answer might be that in this file we need to be
> > pessimistic about such things, since we have no reasonable way to run
> > configure on this platform.
>
> Somebody had better double-check that. We don't need to be
> "pessimistic", we need to be *correct*, because the align values had
> better match the way the compiler will lay out a C struct. Otherwise
> struct-based access to catalog rows will fail. (I'm not sure if there
> are any system catalogs with float8 or int64 columns, but I'd sure not
> want to find out that we couldn't have one because of misconfiguration
> of MSVC builds.)
How do I double-check this?
> I see though that the comment in pg_config.h.win32 claims it was derived
> from mechanically-generated configure output, so unless that's lying
> it should be OK already.
It's not - it started out as a copy of the output of ./configure on mingw.
> AFAIK struct alignment is part of the ABI for
> a platform and is not subject to the whims of individual compilers, so
> the result from MinGW should be OK for MSVC.
Still, it doesn't hurt to double-check.
//Magnus