Re: Function works in 8.4 but not in 9.0 beta2 "ERROR: structure of query does not match function result type" - Mailing list pgsql-bugs

From Tom Lane
Subject Re: Function works in 8.4 but not in 9.0 beta2 "ERROR: structure of query does not match function result type"
Date
Msg-id 19198.1277825565@sss.pgh.pa.us
Whole thread Raw
In response to Function works in 8.4 but not in 9.0 beta2 "ERROR: structure of query does not match function result type"  (Marcel Asio <marcel.asio@redbet.com>)
Responses Re: Function works in 8.4 but not in 9.0 beta2 "ERROR: structure of query does not match function result type"  (Marcel Asio <marcel.asio@redbet.com>)
List pgsql-bugs
Marcel Asio <marcel.asio@redbet.com> writes:
> I've started testing our applications against PostgreSQL 9.0 beta2 and found
> that this function now does not work anymore(rewritten to be as small and
> anonymous as possible)
> CREATE TYPE test_type AS(
>     product text,
>     amount numeric(30,4)
> );
> CREATE FUNCTION test_func() RETURNS SETOF test_type AS $$
> BEGIN
>     RETURN QUERY SELECT 'test'::text, 30.2::numeric;
> END;
> $$ LANGUAGE plpgsql STABLE;

You need to actually coerce the 30.2 to numeric(30,4), not just numeric.
The former behavior wasn't self-consistent.

            regards, tom lane

pgsql-bugs by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: JDBC: 2 bugs: Getting a smallint array actually gets an integer array and return type of a boolean array is bit.
Next
From: Marcel Asio
Date:
Subject: Re: Function works in 8.4 but not in 9.0 beta2 "ERROR: structure of query does not match function result type"