Sam Mason <s...@samason.me.uk> wrote:
 
> you seem to be wanting in-memory representations of "string like
> types" to all use the same representation and only use the actual
> types when saving to/from disk.
 
Doing so when actually assigning to *something* of the more specific
type would probably be better.  In my view, that's not happening here;
although I see that the code currently doesn't recognize the
difference.
 
>> test=# select case when true then 'xxx' else 'a'::"char" end from
t;
>>  case
>> ------
>>  x
>> (1 row)
> 
> With the patch I gave, or something like it, this would throw an
> error because 'xxx' is being used to initialize a value of "char"
> type.
 
As I read the semantics of the CASE predicate, it returns one of the
given values.  'x' is not one of the given values, regardless of type.
I don't think an error is the right thing, I think returning the
specified value is the right thing.  I don't think it's a good thing
that the type system decides that the result type for this case
predicate is "char" and that 'xxx' needs to be coerced to that type.
 
-Kevin

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to