implicit casting bug or feature?
От | Kristo Kaiv |
---|---|
Тема | implicit casting bug or feature? |
Дата | |
Msg-id | 5BD06A1B-CC37-4DA6-BD5F-273EAA89DEE5@skype.net обсуждение исходный текст |
Ответы |
Re: implicit casting bug or feature?
|
Список | pgsql-general |
During development i stumbled upon a strange behaviour in 8.2.4 Here is the case: CREATE TYPE testretval AS (tval text); CREATE OR REPLACE FUNCTION test() RETURNS testretval AS $$ DECLARE _r record; retval testretval%ROWTYPE; BEGIN SELECT 'test'::character(20) as tc INTO retval; RETURN retval; END; $$ LANGUAGE plpgsql SECURITY DEFINER; orderdb_test=# select '-'||tval||'-' from test(); ?column? ------------------------ -test - Why is this still blank padded? Shouldn't a character(20) -> text conversion happen implicitly when the value is selected into the return type that is declared as text? The casting to text itself seems to work just fine: orderdb_test=# select '-'||('test'::character(20))::text||'-'; ?column? ---------- -test- I just want to understand a bit better about the internals of how this works. should it use this cast when selecting to the return type? from casts view i see that: Source type | Target type | Function | Implicit? -----------------------------+----------------------------- +---------------------+--------------- character | text | text | yes Kristo Kaiv http://kaiv.wordpress.com (PostgreSQL blog)
В списке pgsql-general по дате отправления: