I believe this has been fixed.
>Subject: [COMMITTERS] pgsql/src/backend/utils/adt (varchar.c)
>From: ishii@postgresql.org
>To: pgsql-committers@postgresql.org
>Date: Sun, 26 Nov 2000 06:35:23 -0500 (EST)
> Can someone comment on the status of this?
>
> > It seems the length coerce for bpchar is broken since 7.0.
> > In 6.5 when a string is inserted, bpchar() is called to properly clip
> > the string. However in 7.0 (and probably current) bpchar() is not
> > called anymore.
> >
> > coerce_type_typmod() calls exprTypmod(). exprTypmod() returns VARSIZE
> > of the bpchar data only if the data type is bpchar (if the data type
> > is varchar, exprTypmod just returns -1 and the parser add a function
> > node to call varchar(). so there is no problem for varchar). If
> > VARSIZE returned from exprTypmod() and atttypmod passed to
> > coerce_type_typmod() is equal, the function node to call bpchar()
> > would not be added.
> >
> > I'm not sure if this was an intended efect of the change. Anyway we
> > have to do the length coerce for bpchar somewhere and I'm thinking now
> > is doing in bpcharin(). This would also solve the problem in copy in a
> > mail I have posted.
> >
> > Comments?
> > --
> > Tatsuo Ishii
> >
>
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman@candle.pha.pa.us | (610) 853-3000
> + If your life is a hard drive, | 830 Blythe Avenue
> + Christ can be your backup. | Drexel Hill, Pennsylvania 19026