Index: src/backend/utils/adt/selfuncs.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v retrieving revision 1.233 diff -c -r1.233 selfuncs.c *** src/backend/utils/adt/selfuncs.c 21 Apr 2007 21:01:45 -0000 1.233 --- src/backend/utils/adt/selfuncs.c 2 May 2007 20:38:58 -0000 *************** *** 3152,3157 **** --- 3152,3165 ---- #else xfrmlen = strxfrm(NULL, val, 0); #endif + #ifdef WIN32 + /* On win32, if strxfrm fails (for example in UTF8 encoding, since + * it's not properly supported), return the original string instead + * of trying to allocate 2Gb memory. + */ + if (xfrmlen >= INT_MAX) + return val; + #endif xfrmstr = (char *) palloc(xfrmlen + 1); xfrmlen2 = strxfrm(xfrmstr, val, xfrmlen + 1); Assert(xfrmlen2 <= xfrmlen);