diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-03-15 23:12:07 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-03-15 23:12:07 +0000 |
commit | 95f6d2d20921b7c2dbec29bf2706fd9448208aa6 (patch) | |
tree | 21dcb36f9df60546d82d547a7855605be73a771c /src/backend/utils/adt/ruleutils.c | |
parent | d3ff180163a0c88d7a05e0c865f649e5d8bcd6e1 (diff) | |
download | postgresql-95f6d2d20921b7c2dbec29bf2706fd9448208aa6.tar.gz postgresql-95f6d2d20921b7c2dbec29bf2706fd9448208aa6.zip |
Make use of plancache module for SPI plans. In particular, since plpgsql
uses SPI plans, this finally fixes the ancient gotcha that you can't
drop and recreate a temp table used by a plpgsql function.
Along the way, clean up SPI's API a little bit by declaring SPI plan
pointers as "SPIPlanPtr" instead of "void *". This is cosmetic but
helps to forestall simple programming mistakes. (I have changed some
but not all of the callers to match; there are still some "void *"'s
in contrib and the PL's. This is intentional so that we can see if
anyone's compiler complains about it.)
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
-rw-r--r-- | src/backend/utils/adt/ruleutils.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index f17061738a4..9ec0aa56f0a 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.252 2007/02/27 23:48:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.253 2007/03/15 23:12:06 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -105,9 +105,9 @@ typedef struct * Global data * ---------- */ -static void *plan_getrulebyoid = NULL; +static SPIPlanPtr plan_getrulebyoid = NULL; static char *query_getrulebyoid = "SELECT * FROM pg_catalog.pg_rewrite WHERE oid = $1"; -static void *plan_getviewrule = NULL; +static SPIPlanPtr plan_getviewrule = NULL; static char *query_getviewrule = "SELECT * FROM pg_catalog.pg_rewrite WHERE ev_class = $1 AND rulename = $2"; @@ -250,7 +250,7 @@ pg_get_ruledef_worker(Oid ruleoid, int prettyFlags) if (plan_getrulebyoid == NULL) { Oid argtypes[1]; - void *plan; + SPIPlanPtr plan; argtypes[0] = OIDOID; plan = SPI_prepare(query_getrulebyoid, 1, argtypes); @@ -380,7 +380,7 @@ pg_get_viewdef_worker(Oid viewoid, int prettyFlags) if (plan_getviewrule == NULL) { Oid argtypes[2]; - void *plan; + SPIPlanPtr plan; argtypes[0] = OIDOID; argtypes[1] = NAMEOID; |