diff options
| author | Tom Lane | 2009-11-04 22:26:08 +0000 |
|---|---|---|
| committer | Tom Lane | 2009-11-04 22:26:08 +0000 |
| commit | 9bedd128d6ed83798004b3c7ddc33f33703ccf23 (patch) | |
| tree | 95a475a5da180f19c69b5bcf2f6e764b1bc69ea7 /src/include/executor/spi_priv.h | |
| parent | 48912acc089a6148529f12ab0a75b1bf026f231d (diff) | |
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.
Diffstat (limited to 'src/include/executor/spi_priv.h')
| -rw-r--r-- | src/include/executor/spi_priv.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/include/executor/spi_priv.h b/src/include/executor/spi_priv.h index ef50a9013e8..a0dee126952 100644 --- a/src/include/executor/spi_priv.h +++ b/src/include/executor/spi_priv.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/executor/spi_priv.h,v 1.32 2009/01/01 17:23:59 momjian Exp $ + * $PostgreSQL: pgsql/src/include/executor/spi_priv.h,v 1.33 2009/11/04 22:26:06 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -68,6 +68,8 @@ typedef struct _SPI_plan int cursor_options; /* Cursor options used for planning */ int nargs; /* number of plan arguments */ Oid *argtypes; /* Argument types (NULL if nargs is 0) */ + ParserSetupHook parserSetup; /* alternative parameter spec method */ + void *parserSetupArg; } _SPI_plan; #endif /* SPI_PRIV_H */ |
