| From: | Joseph Shraibman <jks(at)selectacast(dot)net> |
|---|---|
| To: | Sam Mason <sam(at)samason(dot)me(dot)uk> |
| Cc: | pgsql-bugs(at)postgresql(dot)org |
| Subject: | Re: BUG #5028: CASE returns ELSE value always when type is "char" |
| Date: | 2009-09-01 17:00:48 |
| Message-ID: | 4A9D5340.7040408@selectacast.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Sam Mason wrote:
> On Tue, Sep 01, 2009 at 04:36:25PM +0000, Joseph Shraibman wrote:
>> Description: CASE returns ELSE value always when type is "char"
>
> I think it's just silently truncating the literal to a single character.
>
>> [local]:playpen=> select c.relkind, CASE c.relkind WHEN 'r' THEN 'table'
>> WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's'
>> THEN 'special' WHEN 'c' THEN 'composite type' WHEN 't' THEN 'toast' ELSE
>> c.relkind
>> playpen-> END from (select 'r'::"char" AS relkind) c;
>> relkind | relkind
>> ---------+---------
>> r | t
Ah, OK it seems I didn't pay close enough attention.
>
> Here, 'r' maps to the "char" literal 'table' which PG interprets as the
> value 't'--i.e. PG silently chops of the 'able'.
So the type of what is in the ELSE clause determines the type of the output?
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alan Rubin | 2009-09-01 17:34:03 | BUG #5029: Download Trouble |
| Previous Message | Sam Mason | 2009-09-01 16:49:25 | Re: BUG #5028: CASE returns ELSE value always when type is "char" |