pgsql: Add support for invoking parser callback hooks via SPI and in

Поиск
Список
Период
Сортировка
От tgl@postgresql.org (Tom Lane)
Тема pgsql: Add support for invoking parser callback hooks via SPI and in
Дата
Msg-id 20091104222608.15A8E753FB7@cvs.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Log Message:
-----------
Add support for invoking parser callback hooks via SPI and in cached plans.

As proof of concept, modify plpgsql to use the hooks.  plpgsql is still
inserting $n symbols textually, but the "back end" of the parsing process now
goes through the ParamRef hook instead of using a fixed parameter-type array,
and then execution only fetches actually-referenced parameters, using a hook
added to ParamListInfo.

Although there's a lot left to be done in plpgsql, this already cures the
"if (TG_OP = 'INSERT' and NEW.foo ...)"  problem, as illustrated by the
changed regression test.

Modified Files:
--------------
    pgsql/doc/src/sgml:
        spi.sgml (r1.65 -> r1.66)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/spi.sgml?r1=1.65&r2=1.66)
    pgsql/src/backend/commands:
        explain.c (r1.192 -> r1.193)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/explain.c?r1=1.192&r2=1.193)
        prepare.c (r1.99 -> r1.100)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/prepare.c?r1=1.99&r2=1.100)
    pgsql/src/backend/executor:
        execCurrent.c (r1.12 -> r1.13)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execCurrent.c?r1=1.12&r2=1.13)
        execQual.c (r1.253 -> r1.254)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execQual.c?r1=1.253&r2=1.254)
        functions.c (r1.135 -> r1.136)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/functions.c?r1=1.135&r2=1.136)
        spi.c (r1.210 -> r1.211)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/spi.c?r1=1.210&r2=1.211)
    pgsql/src/backend/nodes:
        params.c (r1.11 -> r1.12)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/params.c?r1=1.11&r2=1.12)
    pgsql/src/backend/tcop:
        postgres.c (r1.574 -> r1.575)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/tcop/postgres.c?r1=1.574&r2=1.575)
    pgsql/src/backend/utils/cache:
        plancache.c (r1.30 -> r1.31)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/cache/plancache.c?r1=1.30&r2=1.31)
    pgsql/src/include/executor:
        spi.h (r1.72 -> r1.73)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/spi.h?r1=1.72&r2=1.73)
        spi_priv.h (r1.32 -> r1.33)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/executor/spi_priv.h?r1=1.32&r2=1.33)
    pgsql/src/include/nodes:
        params.h (r1.38 -> r1.39)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/params.h?r1=1.38&r2=1.39)
    pgsql/src/include/tcop:
        tcopprot.h (r1.100 -> r1.101)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/tcop/tcopprot.h?r1=1.100&r2=1.101)
    pgsql/src/include/utils:
        plancache.h (r1.15 -> r1.16)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/plancache.h?r1=1.15&r2=1.16)
    pgsql/src/pl/plpgsql/src:
        gram.y (r1.128 -> r1.129)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/gram.y?r1=1.128&r2=1.129)
        pl_comp.c (r1.139 -> r1.140)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/pl_comp.c?r1=1.139&r2=1.140)
        pl_exec.c (r1.248 -> r1.249)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/pl_exec.c?r1=1.248&r2=1.249)
        pl_funcs.c (r1.81 -> r1.82)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/pl_funcs.c?r1=1.81&r2=1.82)
        pl_handler.c (r1.46 -> r1.47)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/pl_handler.c?r1=1.46&r2=1.47)
        plpgsql.h (r1.117 -> r1.118)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/pl/plpgsql/src/plpgsql.h?r1=1.117&r2=1.118)
    pgsql/src/test/regress/expected:
        plpgsql.out (r1.75 -> r1.76)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/plpgsql.out?r1=1.75&r2=1.76)
    pgsql/src/test/regress/sql:
        plpgsql.sql (r1.63 -> r1.64)
        (http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/plpgsql.sql?r1=1.63&r2=1.64)

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

Предыдущее
От: heikki@postgresql.org (Heikki Linnakangas)
Дата:
Сообщение: pgsql: Disable triggering failover with a signal in pg_standby on
Следующее
От: tgl@postgresql.org (Tom Lane)
Дата:
Сообщение: pgsql: Make expression locations for LIKE and SIMILAR TO constructs