Re: BUG #5028: CASE returns ELSE value always when type is "char"
Kevin Grittner <kevin.grittner@wicourts.gov>
From: "Kevin Grittner" <Kevin.Grittner@wicourts.gov>
To: "Sam Mason" <sam@samason.me.uk>,"Tom Lane" <tgl@sss.pgh.pa.us>
Cc: <pgsql-bugs@postgresql.org>
Date: 2009-09-04T15:59:48Z
Lists: pgsql-bugs
Tom Lane <tgl@sss.pgh.pa.us> wrote: > I certainly don't want to have "char" emulate the misbegotten > decision to have explicit and implicit coercions behave differently. > So it looks to me like the argument to make "char" work like char(1) > doesn't actually help us much to decide if an error should be thrown > here or not. On the whole, throwing an error seems better from a > usability perspective. I feel that the behavior of "char" in at least this case should match char(1) (or just plain char): test=# select case when true then 'xxx' else 'a'::"char" end from t; case ------ x (1 row) test=# select case when true then 'xxx' else 'a'::char(1) end from t; case ------ xxx (1 row) test=# select case when true then 'xxx' else 'a'::char end from t; case ------ xxx (1 row) Much as the reason for the behavior of "char" may seem clear when inside the code looking out, it is astonishing for someone writing application code. -Kevin