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

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Add support for invoking parser callback hooks via SPI and in
Date: 2009-11-04 22:26:08
Message-ID: 20091104222608.15A8E753FB7@cvs.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2009-11-04 23:15:08 pgsql: Make expression locations for LIKE and SIMILAR TO constructs
Previous Message Heikki Linnakangas 2009-11-04 12:51:42 pgsql: Disable triggering failover with a signal in pg_standby on