1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-26 01:22:12 +03:00

ProcessUtility_hook:

Add ProcessUtility_hook() to handle all DDL to contrib/pg_stat_statements.

Itagaki Takahiro
This commit is contained in:
Bruce Momjian
2009-12-01 01:08:46 +00:00
parent 29fd97d982
commit d85cb27293
4 changed files with 135 additions and 11 deletions

View File

@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.318 2009/11/20 20:38:11 tgl Exp $
* $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.319 2009/12/01 01:08:46 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -58,6 +58,9 @@
#include "utils/syscache.h"
/* Hooks for plugins to get control in ProcessUtility() */
ProcessUtility_hook_type ProcessUtility_hook = NULL;
/*
* Verify user has ownership of specified relation, else ereport.
*
@ -244,6 +247,10 @@ check_xact_readonly(Node *parsetree)
* completionTag is only set nonempty if we want to return a nondefault status.
*
* completionTag may be NULL if caller doesn't want a status string.
*
* We provide a function hook variable that lets loadable plugins
* get control when ProcessUtility is called. Such a plugin would
* normally call standard_ProcessUtility().
*/
void
ProcessUtility(Node *parsetree,
@ -260,6 +267,20 @@ ProcessUtility(Node *parsetree,
if (completionTag)
completionTag[0] = '\0';
if (ProcessUtility_hook)
(*ProcessUtility_hook) (parsetree, queryString, params, isTopLevel, dest, completionTag);
else
standard_ProcessUtility(parsetree, queryString, params, isTopLevel, dest, completionTag);
}
void
standard_ProcessUtility(Node *parsetree,
const char *queryString,
ParamListInfo params,
bool isTopLevel,
DestReceiver *dest,
char *completionTag)
{
switch (nodeTag(parsetree))
{
/*