pgsql: First phase of plan-invalidation project: create a plan cache

Поиск
Список
Период
Сортировка
От tgl@postgresql.org (Tom Lane)
Тема pgsql: First phase of plan-invalidation project: create a plan cache
Дата
Msg-id 20070313003344.583779FB301@postgresql.org
обсуждение исходный текст
Список pgsql-committers
Log Message:
-----------
First phase of plan-invalidation project: create a plan cache management
module and teach PREPARE and protocol-level prepared statements to use it.
In service of this, rearrange utility-statement processing so that parse
analysis does not assume table schemas can't change before execution for
utility statements (necessary because we don't attempt to re-acquire locks
for utility statements when reusing a stored plan).  This requires some
refactoring of the ProcessUtility API, but it ends up cleaner anyway,
for instance we can get rid of the QueryContext global.

Still to do: fix up SPI and related code to use the plan cache; I'm tempted to
try to make SQL functions use it too.  Also, there are at least some aspects
of system state that we want to ensure remain the same during a replan as in
the original processing; search_path certainly ought to behave that way for
instance, and perhaps there are others.

Modified Files:
--------------
    pgsql/src/backend/access/transam:
        xact.c (r1.235 -> r1.236)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xact.c.diff?r1=1.235&r2=1.236)
    pgsql/src/backend/bootstrap:
        bootparse.y (r1.87 -> r1.88)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/bootstrap/bootparse.y.diff?r1=1.87&r2=1.88)
    pgsql/src/backend/commands:
        cluster.c (r1.156 -> r1.157)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/cluster.c.diff?r1=1.156&r2=1.157)
        copy.c (r1.277 -> r1.278)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/copy.c.diff?r1=1.277&r2=1.278)
        dbcommands.c (r1.192 -> r1.193)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/dbcommands.c.diff?r1=1.192&r2=1.193)
        explain.c (r1.159 -> r1.160)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/explain.c.diff?r1=1.159&r2=1.160)
        indexcmds.c (r1.156 -> r1.157)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/indexcmds.c.diff?r1=1.156&r2=1.157)
        portalcmds.c (r1.61 -> r1.62)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/portalcmds.c.diff?r1=1.61&r2=1.62)
        prepare.c (r1.69 -> r1.70)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/prepare.c.diff?r1=1.69&r2=1.70)
        schemacmds.c (r1.43 -> r1.44)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/schemacmds.c.diff?r1=1.43&r2=1.44)
        tablecmds.c (r1.216 -> r1.217)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablecmds.c.diff?r1=1.216&r2=1.217)
        tablespace.c (r1.43 -> r1.44)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/tablespace.c.diff?r1=1.43&r2=1.44)
        vacuum.c (r1.347 -> r1.348)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c.diff?r1=1.347&r2=1.348)
        view.c (r1.99 -> r1.100)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/view.c.diff?r1=1.99&r2=1.100)
    pgsql/src/backend/executor:
        functions.c (r1.111 -> r1.112)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/functions.c.diff?r1=1.111&r2=1.112)
        spi.c (r1.170 -> r1.171)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/spi.c.diff?r1=1.170&r2=1.171)
    pgsql/src/backend/nodes:
        copyfuncs.c (r1.369 -> r1.370)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.369&r2=1.370)
        equalfuncs.c (r1.300 -> r1.301)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/equalfuncs.c.diff?r1=1.300&r2=1.301)
        outfuncs.c (r1.302 -> r1.303)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.302&r2=1.303)
        params.c (r1.8 -> r1.9)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/params.c.diff?r1=1.8&r2=1.9)
    pgsql/src/backend/optimizer/util:
        clauses.c (r1.237 -> r1.238)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/clauses.c.diff?r1=1.237&r2=1.238)
    pgsql/src/backend/parser:
        analyze.c (r1.361 -> r1.362)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/analyze.c.diff?r1=1.361&r2=1.362)
        gram.y (r2.580 -> r2.581)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/gram.y.diff?r1=2.580&r2=2.581)
    pgsql/src/backend/postmaster:
        autovacuum.c (r1.33 -> r1.34)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/autovacuum.c.diff?r1=1.33&r2=1.34)
    pgsql/src/backend/rewrite:
        rewriteDefine.c (r1.117 -> r1.118)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/rewrite/rewriteDefine.c.diff?r1=1.117&r2=1.118)
    pgsql/src/backend/tcop:
        postgres.c (r1.527 -> r1.528)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/postgres.c.diff?r1=1.527&r2=1.528)
        pquery.c (r1.114 -> r1.115)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/pquery.c.diff?r1=1.114&r2=1.115)
        utility.c (r1.273 -> r1.274)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/utility.c.diff?r1=1.273&r2=1.274)
    pgsql/src/backend/utils/cache:
        Makefile (r1.20 -> r1.21)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/Makefile.diff?r1=1.20&r2=1.21)
    pgsql/src/backend/utils/init:
        postinit.c (r1.174 -> r1.175)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/init/postinit.c.diff?r1=1.174&r2=1.175)
    pgsql/src/backend/utils/mmgr:
        README (r1.9 -> r1.10)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/mmgr/README.diff?r1=1.9&r2=1.10)
        mcxt.c (r1.59 -> r1.60)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/mmgr/mcxt.c.diff?r1=1.59&r2=1.60)
        portalmem.c (r1.99 -> r1.100)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/mmgr/portalmem.c.diff?r1=1.99&r2=1.100)
    pgsql/src/backend/utils/resowner:
        README (r1.4 -> r1.5)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/resowner/README.diff?r1=1.4&r2=1.5)
        resowner.c (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/resowner/resowner.c.diff?r1=1.23&r2=1.24)
    pgsql/src/include/access:
        xact.h (r1.84 -> r1.85)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xact.h.diff?r1=1.84&r2=1.85)
    pgsql/src/include/commands:
        cluster.h (r1.31 -> r1.32)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/cluster.h.diff?r1=1.31&r2=1.32)
        copy.h (r1.29 -> r1.30)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/copy.h.diff?r1=1.29&r2=1.30)
        defrem.h (r1.80 -> r1.81)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/defrem.h.diff?r1=1.80&r2=1.81)
        explain.h (r1.29 -> r1.30)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/explain.h.diff?r1=1.29&r2=1.30)
        portalcmds.h (r1.21 -> r1.22)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/portalcmds.h.diff?r1=1.21&r2=1.22)
        prepare.h (r1.24 -> r1.25)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/prepare.h.diff?r1=1.24&r2=1.25)
        schemacmds.h (r1.15 -> r1.16)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/schemacmds.h.diff?r1=1.15&r2=1.16)
        vacuum.h (r1.69 -> r1.70)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/vacuum.h.diff?r1=1.69&r2=1.70)
        view.h (r1.24 -> r1.25)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/view.h.diff?r1=1.24&r2=1.25)
    pgsql/src/include/nodes:
        params.h (r1.34 -> r1.35)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/params.h.diff?r1=1.34&r2=1.35)
        parsenodes.h (r1.341 -> r1.342)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/parsenodes.h.diff?r1=1.341&r2=1.342)
    pgsql/src/include/parser:
        analyze.h (r1.35 -> r1.36)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/parser/analyze.h.diff?r1=1.35&r2=1.36)
    pgsql/src/include/rewrite:
        rewriteDefine.h (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/rewrite/rewriteDefine.h.diff?r1=1.23&r2=1.24)
    pgsql/src/include/tcop:
        pquery.h (r1.41 -> r1.42)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/tcop/pquery.h.diff?r1=1.41&r2=1.42)
        utility.h (r1.31 -> r1.32)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/tcop/utility.h.diff?r1=1.31&r2=1.32)
    pgsql/src/include/utils:
        memutils.h (r1.61 -> r1.62)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/memutils.h.diff?r1=1.61&r2=1.62)
        portal.h (r1.73 -> r1.74)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/portal.h.diff?r1=1.73&r2=1.74)
        resowner.h (r1.10 -> r1.11)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/resowner.h.diff?r1=1.10&r2=1.11)
    pgsql/src/test/regress/expected:
        rules.out (r1.124 -> r1.125)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/rules.out.diff?r1=1.124&r2=1.125)
    pgsql/src/test/regress:
        parallel_schedule (r1.39 -> r1.40)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/parallel_schedule.diff?r1=1.39&r2=1.40)
        serial_schedule (r1.37 -> r1.38)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/serial_schedule.diff?r1=1.37&r2=1.38)

Added Files:
-----------
    pgsql/src/backend/utils/cache:
        plancache.c (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/plancache.c?rev=1.1&content-type=text/x-cvsweb-markup)
    pgsql/src/include/utils:
        plancache.h (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/plancache.h?rev=1.1&content-type=text/x-cvsweb-markup)
    pgsql/src/test/regress/expected:
        plancache.out (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/plancache.out?rev=1.1&content-type=text/x-cvsweb-markup)
    pgsql/src/test/regress/sql:
        plancache.sql (r1.1)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/plancache.sql?rev=1.1&content-type=text/x-cvsweb-markup)

В списке pgsql-committers по дате отправления:

Предыдущее
От: petere@postgresql.org (Peter Eisentraut)
Дата:
Сообщение: pgsql: Make configuration parameters fall back to their default values
Следующее
От: gsmet@pgfoundry.org (User Gsmet)
Дата:
Сообщение: pgfouine - pgfouine: removed the random selection of examples as it is