Re: ODBC query problem

Поиск
Список
Период
Сортировка
От Maksim Likharev
Тема Re: ODBC query problem
Дата
Msg-id 56510AAEF435D240958D1CE8C6B1770A016D2DC1@mailc03.aurigin.com
обсуждение исходный текст
Ответ на ODBC query problem  (Luis Magaña <joe666@gnovus.com>)
Ответы ODBC query problem AGAIN  (Luis Magaña <joe666@gnovus.com>)
Список pgsql-general
I was not pushy, wasn't I?

but honestly, better to have it there cause that would simplify
deployment,
just compile ( not patch and compile ).
Thank you.



-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Thursday, July 17, 2003 2:00 PM
To: Maksim Likharev
Cc: joe666@gnovus.com; Andrew Sullivan; Postgresql General Mail List
Subject: Re: [GENERAL] ODBC query problem


"Maksim Likharev" <mlikharev@aurigin.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;
      }



В списке pgsql-general по дате отправления:

Предыдущее
От: "Nigel J. Andrews"
Дата:
Сообщение: Re: what's the scope of psql parameter values?
Следующее
От: "Maksim Likharev"
Дата:
Сообщение: Temp tables, question