Re: unknownin/out patch (was [HACKERS] PQescapeBytea is - Mailing list pgsql-patches

From Joe Conway
Subject Re: unknownin/out patch (was [HACKERS] PQescapeBytea is
Date
Msg-id 3CB27E37.9010704@joeconway.com
Whole thread Raw
In response to Re: unknownin/out patch (was [HACKERS] PQescapeBytea is not  (Tatsuo Ishii <t-ishii@sra.co.jp>)
List pgsql-patches
Tatsuo Ishii wrote:
 >>> Tatsuo Ishii wrote:
 >>>
 >>>>
 >>>> Try a multibyte encoding database. For example,
 >>>>
 >>>> $ createdb -E EUC_JP test $ psql -c 'SELECT
 >>>> SUBSTRING('1234567890' FROM 3)' test substring ----------- 3456
 >>>>

 >>>> (1 row)
 >>>>
 >>>> Apparently this is wrong. -- Tatsuo Ishii
 >>>
 >>> This problem exists in CVS tip *without* the unknownin/out
 >>> patch:
 >>
 >> Sure. That has been broken for a while.
 >
 >
 > I guess this actually happened in 1.79 of varlena.c:
 >
Yes, I was just looking at that also. It doesn't consider the case of n
= -1 for MB. See the lines:

#ifdef MULTIBYTE
    eml = pg_database_encoding_max_length ();

    if (eml > 1)
    {
       sm = 0;
       sn = (m + n) * eml + 3;
    }
#endif

When n = -1 this does the wrong thing. And also a few lines later:

#ifdef MULTIBYTE
    len = pg_mbstrlen_with_len (VARDATA (string), sn - 3);

I think both places need to test for n = -1. Do you agree?


Joe


pgsql-patches by date:

Previous
From: Tatsuo Ishii
Date:
Subject: Re: unknownin/out patch (was [HACKERS] PQescapeBytea is
Next
From: Joe Conway
Date:
Subject: Re: unknownin/out patch (was [HACKERS] PQescapeBytea is