Re: Specifying Rowtypes
От | Christopher Kings-Lynne |
---|---|
Тема | Re: Specifying Rowtypes |
Дата | |
Msg-id | GNELIHDDFBOCMGBFGEFOIEECCFAA.chriskl@familyhealth.com.au обсуждение исходный текст |
Ответ на | Specifying Rowtypes (Curt Sampson <cjs@cynic.net>) |
Список | pgsql-hackers |
No, in 7.3 you can create anonymous composite types using the CREATE TYPE command. Chris > -----Original Message----- > From: pgsql-hackers-owner@postgresql.org > [mailto:pgsql-hackers-owner@postgresql.org]On Behalf Of Curt Sampson > Sent: Wednesday, 29 January 2003 1:45 PM > To: PostgreSQL Development > Subject: [HACKERS] Specifying Rowtypes > > > > 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@cynic.net> +81 90 7737 2974 http://www.netbsd.org > Don't you know, in this new Dark Age, we're all light. --XTC > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster >
В списке pgsql-hackers по дате отправления: