On Mon, Jan 02, 2006 at 11:39:39PM +0000, Tim Bunce wrote: > 
> > Any idea what should I try next to make CS_IS_UTF8 (and fbh->csid)
> > behave like it is supposed to?
> 
> I think it only needs to *4 if the _client_ csid is utf8.

Exactly.

> Try the attached.
> 
> If that works then I think similar logic is needed for NCHAR.
> Could you reproduce the problem using an NCHAR field with your client
> NCHAR charset set to utf8 and your non-nchar charset set to an 8bit
> charset?
> 
> Tim.

> Index: oci8.c
> ===================================================================
> --- oci8.c    (revision 2342)
> +++ oci8.c    (working copy)
> @@ -1223,7 +1223,7 @@
>               /* FALLTHRU */
>       case  96:                               /* CHAR         */
>               fbh->disize = fbh->dbsize;
> -             if (CS_IS_UTF8(fbh->csid)) 
> +             if (CS_IS_UTF8(csid)) 

Well, in revision 2334 (that you DBD-Oracle 1.17 RC you sent) there is
no csid variable. Could you please send patch against 2334?

>                   fbh->disize = fbh->dbsize * 4;
>               fbh->prec   = fbh->disize;
>               break;
> @@ -1249,7 +1249,7 @@
>               break;
>  
>       case   8:                               /* LONG         */
> -                if (CS_IS_UTF8(fbh->csid)) 
> +                if (CS_IS_UTF8(csid)) 
>                      fbh->disize = long_readlen * 4;
>                  else
>                      fbh->disize = long_readlen;

-- 
------------------------------------------------------------------------
 Honza Pazdziora | [EMAIL PROTECTED] | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
                Only self-confident people can be simple.

Reply via email to