Thread: pgsql: Extend ExecMakeFunctionResult() to support set-returning

pgsql: Extend ExecMakeFunctionResult() to support set-returning

From
tgl@postgresql.org (Tom Lane)
Date:
Log Message:
-----------
Extend ExecMakeFunctionResult() to support set-returning functions that return
via a tuplestore instead of value-per-call.  Refactor a few things to reduce
ensuing code duplication with nodeFunctionscan.c.  This represents the
reasonably noncontroversial part of my proposed patch to switch SQL functions
over to returning tuplestores.  For the moment, SQL functions still do things
the old way.  However, this change enables PL SRFs to be called in targetlists
(observe changes in plperl regression results).

Modified Files:
--------------
    pgsql/contrib/tablefunc:
        tablefunc.c (r1.53 -> r1.54)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/contrib/tablefunc/tablefunc.c?r1=1.53&r2=1.54)
    pgsql/doc/src/sgml:
        plpgsql.sgml (r1.134 -> r1.135)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/plpgsql.sgml?r1=1.134&r2=1.135)
    pgsql/src/backend/executor:
        execQual.c (r1.233 -> r1.234)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execQual.c?r1=1.233&r2=1.234)
        execTuples.c (r1.102 -> r1.103)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execTuples.c?r1=1.102&r2=1.103)
        nodeFunctionscan.c (r1.47 -> r1.48)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeFunctionscan.c?r1=1.47&r2=1.48)
    pgsql/src/backend/utils/fmgr:
        README (r1.13 -> r1.14)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/fmgr/README?r1=1.13&r2=1.14)
    pgsql/src/include/executor:
        executor.h (r1.149 -> r1.150)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/executor.h?r1=1.149&r2=1.150)
        tuptable.h (r1.38 -> r1.39)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/tuptable.h?r1=1.38&r2=1.39)
    pgsql/src/include/nodes:
        execnodes.h (r1.191 -> r1.192)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/execnodes.h?r1=1.191&r2=1.192)
    pgsql/src/pl/plperl/expected:
        plperl.out (r1.13 -> r1.14)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plperl/expected/plperl.out?r1=1.13&r2=1.14)