Re: ODBC query problem

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;
}

In response to

Browse pgsql-general by date

  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!