Обсуждение: Cast possible only throught a function
Hi all, running on Postgres 7.3.3 I seen that cast a integer to an intervall is not permitted select 0::interval; <- give error but select 0::text::interval; <- works fine but I notice that the following function return correctly doing the integer -> interval cast in one "shot": create or replace function foo() returns interval as ' declare begin return 0; end; ' language 'plpgsql'; this implicit cast could not be source of issue ? Gaetano
"Mendola Gaetano" <mendola@bigfoot.com> writes: > but I notice that the following function return correctly > doing the integer -> interval cast in one "shot": What plpgsql is doing is roughly comparable to regression=# select '0'::interval; interval ---------- 00:00:00 (1 row) This is not the same as a SQL type conversion --- that works only when a cast function is defined in pg_cast. plpgsql is pretty lax about datatype considerations. It is willing to try to convert anything to anything else by running the first type's output procedure (to get text) and then the second type's input procedure. In straight SQL you'd have to specify a cast to text to get the equivalent behavior. regards, tom lane