diff options
Diffstat (limited to 'src/backend/utils/mmgr/portalmem.c')
-rw-r--r-- | src/backend/utils/mmgr/portalmem.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c index da4aee4d162..85a6711d1cd 100644 --- a/src/backend/utils/mmgr/portalmem.c +++ b/src/backend/utils/mmgr/portalmem.c @@ -12,7 +12,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/mmgr/portalmem.c,v 1.91 2006/08/08 01:23:15 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mmgr/portalmem.c,v 1.92 2006/08/14 22:57:15 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -147,6 +147,34 @@ GetPortalByName(const char *name) } /* + * PortalListGetPrimaryQuery + * Get the "primary" Query within a portal, ie, the one marked canSetTag. + * + * Returns NULL if no such Query. If multiple Query structs within the + * portal are marked canSetTag, returns the first one. Neither of these + * cases should occur in present usages of this function. + * + * Note: the reason this is just handed a List is so that prepared statements + * can share the code. For use with a portal, use PortalGetPrimaryQuery + * rather than calling this directly. + */ +Query * +PortalListGetPrimaryQuery(List *parseTrees) +{ + ListCell *lc; + + foreach(lc, parseTrees) + { + Query *query = (Query *) lfirst(lc); + + Assert(IsA(query, Query)); + if (query->canSetTag) + return query; + } + return NULL; +} + +/* * CreatePortal * Returns a new portal given a name. * |