From: | Curt Sampson <cjs(at)cynic(dot)net> |
---|---|
To: | PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Specifying Rowtypes |
Date: | 2003-01-29 05:44:34 |
Message-ID: | Pine.NEB.4.51.0301291440050.5881@angelic.cynic.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
So currently the only way to specify a row type is by using a table,
right? E.g.:
CREATE TABLE t2_retval (
value1 int NOT NULL DEFAULT -1,
value2 int NOT NULL,
value3 int
);
Are there plans to add another way of declaring this sort of thing so
that I don't have to add a new table to my schema for every function
that returns a rowtype?
Second, it seems that there's still a problem with NULLs here:
CREATE FUNCTION t2()
RETURNS t2_retval
AS '
DECLARE
retval t2_retval%ROWTYPE;
BEGIN
SELECT INTO retval null, null, null;
RETURN retval;
END
' LANGUAGE 'plpgsql';
This is returning a row that (to my mind) doesn't match the type of the
table above, because it's returning null for non-nullable columns:
cjs=> select coalesce(value1, -999), coalesce(value2, -999),
cjs-> coalesce(value3, -999) from t2();
case | case | case
------+------+------
-999 | -999 | -999
(1 row)
(You get the same result if you delete the SELECT INTO line above.)
Am I misunderstanding something here, or is this a bug?
cjs
--
Curt Sampson <cjs(at)cynic(dot)net> +81 90 7737 2974 http://www.netbsd.org
Don't you know, in this new Dark Age, we're all light. --XTC
From | Date | Subject | |
---|---|---|---|
Next Message | Neil Conway | 2003-01-29 05:46:42 | Re: Request for qualified column names |
Previous Message | Curt Sampson | 2003-01-29 05:35:01 | Re: postgres installation - best configuration? |