Tom Lane wrote: > Joe Conway <[EMAIL PROTECTED]> writes: >>Attached adds: >> + TupleDesc queryDesc; /* descriptor for planned query */ >>to ReturnSetInfo, and populates ReturnSetInfo for every function call to >> ExecMakeTableFunctionResult, not just when fn_retset. > > I thought "expectedDesc" was a more sensible choice of name, so I made > it that. Otherwise, patch applied.
I was trying to actually use this new feature today, and ran into a little bug in nodeFunctionscan.c that prevented it from actually working. For anonymous composite types, ExecInitFunctionScan builds the tuple description using: tupdesc = BuildDescForRelation(coldeflist); But BuildDescForRelation leaves initializes the tupdesc like this: desc = CreateTemplateTupleDesc(natts, UNDEFOID); The UNDEFOID later causes an assertion failure in heap_formtuple when you try to use the tupdesc to build a tuple. Attached is a very small patch to fix. >>I haven't done it yet, but I suppose this should be documented in >>xfunc.sgml. > Actually, most of what's in src/backend/utils/fmgr/README should be > transposed into xfunc.sgml someday. After beta starts I'll work on migrating this to the sgml docs. Joe
Index: src/backend/executor/nodeFunctionscan.c =================================================================== RCS file: /opt/src/cvs/pgsql-server/src/backend/executor/nodeFunctionscan.c,v retrieving revision 1.9 diff -c -r1.9 nodeFunctionscan.c *** src/backend/executor/nodeFunctionscan.c 30 Aug 2002 23:59:46 -0000 1.9 --- src/backend/executor/nodeFunctionscan.c 31 Aug 2002 18:01:48 -0000 *************** *** 226,231 **** --- 226,232 ---- List *coldeflist = rte->coldeflist; tupdesc = BuildDescForRelation(coldeflist); + tupdesc->tdhasoid = WITHOUTOID; } else elog(ERROR, "Unknown kind of return type specified for function");
---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly