From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Maksim Likharev" <mlikharev(at)aurigin(dot)com> |
Cc: | joe666(at)gnovus(dot)com, "Andrew Sullivan" <andrew(at)libertyrms(dot)info>, "Postgresql General Mail List" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: ODBC query problem |
Date: | 2003-07-17 21:00:18 |
Message-ID: | 14696.1058475618@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
"Maksim Likharev" <mlikharev(at)aurigin(dot)com> writes:
> I would suggest, if I may, following:
Okay, okay, already ;-)
I've patched it per attached for 7.3.4.
regards, tom lane
*** src/backend/utils/adt/selfuncs.c.orig Wed Apr 16 00:38:05 2003
--- src/backend/utils/adt/selfuncs.c Thu Jul 17 16:49:07 2003
***************
*** 2313,2321 ****
convert_string_datum(Datum value, Oid typid)
{
char *val;
- char *xfrmstr;
- size_t xfrmsize;
- size_t xfrmlen;
switch (typid)
{
--- 2313,2318 ----
***************
*** 2355,2371 ****
if (!lc_collate_is_c())
{
! /* Guess that transformed string is not much bigger than original */
! xfrmsize = strlen(val) + 32; /* arbitrary pad value here... */
! xfrmstr = (char *) palloc(xfrmsize);
! xfrmlen = strxfrm(xfrmstr, val, xfrmsize);
! if (xfrmlen >= xfrmsize)
! {
! /* Oops, didn't make it */
! pfree(xfrmstr);
! xfrmstr = (char *) palloc(xfrmlen + 1);
! xfrmlen = strxfrm(xfrmstr, val, xfrmlen + 1);
! }
pfree(val);
val = xfrmstr;
}
--- 2352,2372 ----
if (!lc_collate_is_c())
{
! char *xfrmstr;
! size_t xfrmlen;
! size_t xfrmlen2;
!
! /*
! * Note: originally we guessed at a suitable output buffer size,
! * and only needed to call strxfrm twice if our guess was too small.
! * However, it seems that some versions of Solaris have buggy
! * strxfrm that can write past the specified buffer length in that
! * scenario. So, do it the dumb way for portability.
! */
! xfrmlen = strxfrm(NULL, val, 0);
! xfrmstr = (char *) palloc(xfrmlen + 1);
! xfrmlen2 = strxfrm(xfrmstr, val, xfrmlen + 1);
! Assert(xfrmlen2 == xfrmlen);
pfree(val);
val = xfrmstr;
}
From | Date | Subject | |
---|---|---|---|
Next Message | Nigel J. Andrews | 2003-07-17 21:01:19 | Re: what's the scope of psql parameter values? |
Previous Message | Josh Berkus | 2003-07-17 20:53:51 | Re: We need volunteers for Comdex! |