The following bug has been logged online:

Bug reference:      1702
Logged by:          Jan Behrens
Email address:      [EMAIL PROTECTED]
PostgreSQL version: 8.0.3
Operating system:   NetBSD
Description:        Function returning nested composite types
Details: 

Following input:

 CREATE TYPE test1 AS (a text, b text);
 CREATE TYPE test2 AS (c test1, d test1);
 
 CREATE FUNCTION test3 () RETURNS test2
 LANGUAGE 'plpgsql' AS $$
  DECLARE 
    result test2;
  BEGIN
    result := ROW (ROW ('1', '2'), ROW ('3', '4'));
    RETURN result;
  END; $$;
 
 SELECT * FROM test3();


generates the following error:

 ERROR:  row not compatible with its own tupdesc
 CONTEXT:  PL/pgSQL function "test3" line 5 at return


I assume this is a bug, because the source code says:

 if (estate->retval == (Datum) NULL)
 /* should not happen */
 elog(ERROR,
 "row not compatible with its own tupdesc");
[...]
 if (tup == NULL) /* should not happen */
 elog(ERROR,
 "row not compatible with its own tupdesc");

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to