> I've updated my VC++ build env with latest CVS, and it no > longer builds because of changes to GIST: > > src\backend\access\gist\gistutil.c(237) : error C2057: > expected constant expression > src\backend\access\gist\gistutil.c(237) : error C2466: cannot > allocate an array of constant size 0 > src\backend\access\gist\gistutil.c(237) : error C2133: 'storage' : > unknown size > > > The problem appears to come from: > #define GEVHDRSZ (offsetof(GistEntryVector, vector[0])) > > Which can't be used in this context. > > What would be the proper fix for that?
Hmm. Now that I look at it more clearly, it seems Hiroshi has a fix for this in his submitted patch (that still had a lot of other problems in the rest of it). I'm not sure if it's the proper fix, but it's there. Comments on it? --- src/backend/access/gist/gistutil.c.orig Thu Jun 22 20:46:55 2006 +++ src/backend/access/gist/gistutil.c Thu Jun 22 20:47:22 2006 @@ -228,6 +228,12 @@ /* * makes union of two key */ + +#ifdef _MSC_VER +#undef GEVHDRSZ +#define GEVHDRSZ (offsetof(GistEntryVector, vector)) +#endif + static void gistMakeUnionKey( GISTSTATE *giststate, int attno, GISTENTRY *entry1, bool isnull1, //Magnus ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match