From: | "David E(dot) Wheeler" <david(at)kineticode(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | "Ryan Bradetich" <rbradetich(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [Review] Tests citext casts by David Wheeler. |
Date: | 2008-09-05 18:33:08 |
Message-ID: | 981AF544-4983-4C2F-A329-E751D475EAAD@kineticode.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sep 5, 2008, at 11:30, Tom Lane wrote:
> Thanks for reviewing. I've committed this with your suggestions and
> one additional non-cosmetic change: schema-qualify names in the
> bodies of the SQL functions so that they are not search_path
> dependent.
Thanks, I'll check that out.
> One thing that didn't make a lot of sense to me was the last new
> function:
>
> CREATE OR REPLACE FUNCTION translate( citext, citext, text ) RETURNS
> TEXT AS $$
> SELECT
> pg_catalog.translate( pg_catalog.translate( $1::pg_catalog.text,
> pg_catalog.lower($2::pg_catalog.text), $3),
> pg_catalog.upper($2::pg_catalog.text), $3);
> $$ LANGUAGE SQL IMMUTABLE STRICT;
>
> Why is it using upper()?
To make translate() work case-insensitively, it does two translates:
One lowercase and one uppercase. This allows the translated value to
be returned with its original casing in tact. No, this isn't ideal,
but it was simple to do.
Best,
David
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Davis | 2008-09-05 18:41:23 | Re: Planner question |
Previous Message | Heikki Linnakangas | 2008-09-05 18:32:22 | Re: Prototype: In-place upgrade v02 |