Re: Make length(char(n)) return 'true' length

From: Gavin Sherry <swm(at)linuxworld(dot)com(dot)au>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Make length(char(n)) return 'true' length
Date: 2004-02-12 18:51:26
Message-ID: Pine.LNX.4.58.0402130551100.30632@linuxworld.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)postgresql(dot)org
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
> + If your life is a hard drive, | 13 Roberts Road
> + Christ can be your backup. | Newtown Square, Pennsylvania 19073
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2004-02-12 18:58:37 Re: Make length(char(n)) return 'true' length
Previous Message Tom Lane 2004-02-12 18:50:24 Re: Proposed Query Planner TODO items