Thread: pgsql: Improve tuplestore.c to support multiple concurrent read

pgsql: Improve tuplestore.c to support multiple concurrent read

From
tgl@postgresql.org (Tom Lane)
Date:
Log Message:
-----------
Improve tuplestore.c to support multiple concurrent read positions.
This facility replaces the former mark/restore support but is otherwise
upward-compatible with previous uses.  It's expected to be needed for
single evaluation of CTEs and also for window functions, so I'm committing
it separately instead of waiting for either one of those patches to be
finished.  Per discussion with Greg Stark and Hitoshi Harada.

Note: I removed nodeFunctionscan's mark/restore support, instead of bothering
to update it for this change, because it was dead code anyway.

Modified Files:
--------------
    pgsql/src/backend/executor:
        execAmi.c (r1.97 -> r1.98)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execAmi.c?r1=1.97&r2=1.98)
        nodeFunctionscan.c (r1.46 -> r1.47)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeFunctionscan.c?r1=1.46&r2=1.47)
        nodeMaterial.c (r1.62 -> r1.63)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeMaterial.c?r1=1.62&r2=1.63)
    pgsql/src/backend/utils/sort:
        tuplestore.c (r1.39 -> r1.40)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/sort/tuplestore.c?r1=1.39&r2=1.40)
    pgsql/src/include/executor:
        nodeFunctionscan.h (r1.11 -> r1.12)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/nodeFunctionscan.h?r1=1.11&r2=1.12)
    pgsql/src/include/nodes:
        execnodes.h (r1.187 -> r1.188)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/execnodes.h?r1=1.187&r2=1.188)
    pgsql/src/include/utils:
        tuplestore.h (r1.23 -> r1.24)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/tuplestore.h?r1=1.23&r2=1.24)