From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Zeugswetter Andreas ADI SD <ZeugswetterA(at)spardat(dot)at>, andrew(at)supernews(dot)com, "Patches (PostgreSQL)" <pgsql-patches(at)postgresql(dot)org> |
Subject: | Re: [HACKERS] like/ilike improvements |
Date: | 2007-06-01 03:39:30 |
Message-ID: | 465F94F2.1070707@dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-patches |
Tom Lane wrote:
> Andrew Dunstan <andrew(at)dunslane(dot)net> writes:
>
>> do { (t)++; (tlen)--} while ((*(t) & 0xC0) == 0x80 && tlen > 0)
>>
>
> The while *must* test those two conditions in the other order.
> (Don't laugh --- we've had reproducible bugs before in which the backend
> dumped core because of running off the end of memory due to this type
> of mistake.)
>
>
>> In fact, I'm wondering if that might make the other UTF8 stuff redundant
>> - the whole point of what we're doing is to avoid expensive calls to
>> NextChar;
>>
>
> +1 I think. This test will be approximately the same expense as what
> the outer loop would otherwise be (tlen > 0 and *t != firstpat), and
> doing it this way removes an entire layer of intellectual complexity.
> Even though the code is hardly different, we are no longer dealing in
> misaligned pointers anywhere in the match algorithm.
>
>
>
OK, here is a patch that I think incorporates all the ideas discussed
(including part of Mark Mielke's suggestion about optimising %_). There
is now no special treatment of UTF8 other than its use of a faster
NextChar macro.
cheers
andrew
Attachment | Content-Type | Size |
---|---|---|
like.patch | text/x-patch | 26.7 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2007-06-01 03:47:49 | Re: Hash joins vs small-integer join values |
Previous Message | Tom Lane | 2007-06-01 03:22:40 | Re: Autovacuum versus rolled-back transactions |
From | Date | Subject | |
---|---|---|---|
Next Message | ITAGAKI Takahiro | 2007-06-01 05:07:29 | Re: [HACKERS] like/ilike improvements |
Previous Message | Jaime Casanova | 2007-06-01 03:26:13 | GUC temp_tablespaces (updated) |