Обсуждение: BUG #1702: Function returning nested composite types

Поиск
Список
Период
Сортировка

BUG #1702: Function returning nested composite types

От
"Jan Behrens"
Дата:
The following bug has been logged online:

Bug reference:      1702
Logged by:          Jan Behrens
Email address:      jan@monso.de
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");