Re: [Review] Tests citext casts by David Wheeler.

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

In response to

Responses

Browse pgsql-hackers by date

  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