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 по дате отправления:

Предыдущее
От: "Alexander Staubo"
Дата:
Сообщение: Re: Chunk Delete
Следующее
От: Sam Mason
Дата:
Сообщение: Re: Enforcing Join condition