Search Postgresql Archives

implicit casting bug or feature?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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)



---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your
      message can get through to the mailing list cleanly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux