length coerce for bpchar is broken since 7.0 - Mailing list pgsql-hackers

From Tatsuo Ishii
Subject length coerce for bpchar is broken since 7.0
Date
Msg-id 20001017113017H.t-ishii@sra.co.jp
Whole thread Raw
Responses Re: length coerce for bpchar is broken since 7.0
Re: length coerce for bpchar is broken since 7.0
List pgsql-hackers
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


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: fkey + primary key does not work in current
Next
From: Tom Lane
Date:
Subject: Re: length coerce for bpchar is broken since 7.0