Re: Make length(char(n)) return 'true' length - Mailing list pgsql-hackers

From Gavin Sherry
Subject Re: Make length(char(n)) return 'true' length
Date
Msg-id Pine.LNX.4.58.0402130551100.30632@linuxworld.com.au
Whole thread Raw
In response to Re: Make length(char(n)) return 'true' length  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
I believe Tom applied this while you were away.

Gavin

On Thu, 12 Feb 2004, Bruce Momjian wrote:

>
> Looks good to me but I will get some other eyse on it before I apply it.
>
> Your patch has been added to the PostgreSQL unapplied patches list at:
>
>     http://momjian.postgresql.org/cgi-bin/pgpatches
>
> I will try to apply it within the next 48 hours.
>
> ---------------------------------------------------------------------------
>
>
> Gavin Sherry wrote:
> > The attached patch changes the existing behaviour of length(char(n)).
> > Currently, this is what happens:
> >
> > template1=# select length('blah'::char(10));
> >  length
> > --------
> >      10
> > (1 row)
> >
> > With this patch:
> >
> > template1=# select length('blah'::char(10));
> >  length
> > --------
> >       4
> > (1 row)
> >
> > This behaviour was proposed by Tom back in November last year. (I have
> > tried to handle multibyte correctly but probably haven't -- hence my email
> > hackers instead of patches).
> >
> > The spec doesn't give us any insight (as far as I can tell) as to how we
> > should do it length(char(n)), but the above seems consistent with other
> > parts of the code (eg, comparison functions, concatenation).
> >
> > SQL200X has these choice paragraphs for those who are interested:
> >
> >          <length expression> returns the length of a given character string,
> >          as an exact numeric value, in characters or octets according to the
> >          choice of function.
> >
> > And:
> >
> >             the result is the number of explicit or implicit
> >               <char length units> in <char length expression>, counted in
> >               accordance with the definition of those units in the relevant
> >               normatively referenced document.
> >
> > I have no idea what the 'normatively referenced document' is, but grep-ing
> > through all of SQL200X, 99 and 92 didn't reveal anything too interesting.
> >
> >
> > Gavin
>
> Content-Description:
>
> [ Attachment, skipping... ]
>
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
>


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Make length(char(n)) return 'true' length
Next
From: Tom Lane
Date:
Subject: Re: Proposed Query Planner TODO items