diff options
| author | Robert Haas <rhaas@postgresql.org> | 2012-07-20 11:38:47 -0400 |
|---|---|---|
| committer | Robert Haas <rhaas@postgresql.org> | 2012-07-20 11:39:01 -0400 |
| commit | 3a0e4d36ebd7f477822d5bae41ba121a40d22ccc (patch) | |
| tree | 323cd89ebb88c51b796b86f17f6efa1db76a761e /contrib/pg_stat_statements/pg_stat_statements.c | |
| parent | be86e3dd5b42c33387ae976c014e6276c9439f7f (diff) | |
| download | postgresql-3a0e4d36ebd7f477822d5bae41ba121a40d22ccc.tar.gz | |
Make new event trigger facility actually do something.
Commit 3855968f328918b6cd1401dd11d109d471a54d40 added syntax, pg_dump,
psql support, and documentation, but the triggers didn't actually fire.
With this commit, they now do. This is still a pretty basic facility
overall because event triggers do not get a whole lot of information
about what the user is trying to do unless you write them in C; and
there's still no option to fire them anywhere except at the very
beginning of the execution sequence, but it's better than nothing,
and a good building block for future work.
Along the way, add a regression test for ALTER LARGE OBJECT, since
testing of event triggers reveals that we haven't got one.
Dimitri Fontaine and Robert Haas
Diffstat (limited to 'contrib/pg_stat_statements/pg_stat_statements.c')
| -rw-r--r-- | contrib/pg_stat_statements/pg_stat_statements.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index aa11c144d6..bf636fdc78 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -240,8 +240,9 @@ static void pgss_ExecutorRun(QueryDesc *queryDesc, static void pgss_ExecutorFinish(QueryDesc *queryDesc); static void pgss_ExecutorEnd(QueryDesc *queryDesc); static void pgss_ProcessUtility(Node *parsetree, - const char *queryString, ParamListInfo params, bool isTopLevel, - DestReceiver *dest, char *completionTag); + const char *queryString, ParamListInfo params, + DestReceiver *dest, char *completionTag, + ProcessUtilityContext context); static uint32 pgss_hash_fn(const void *key, Size keysize); static int pgss_match_fn(const void *key1, const void *key2, Size keysize); static uint32 pgss_hash_string(const char *str); @@ -785,8 +786,8 @@ pgss_ExecutorEnd(QueryDesc *queryDesc) */ static void pgss_ProcessUtility(Node *parsetree, const char *queryString, - ParamListInfo params, bool isTopLevel, - DestReceiver *dest, char *completionTag) + ParamListInfo params, DestReceiver *dest, + char *completionTag, ProcessUtilityContext context) { /* * If it's an EXECUTE statement, we don't track it and don't increment the @@ -819,10 +820,10 @@ pgss_ProcessUtility(Node *parsetree, const char *queryString, { if (prev_ProcessUtility) prev_ProcessUtility(parsetree, queryString, params, - isTopLevel, dest, completionTag); + dest, completionTag, context); else standard_ProcessUtility(parsetree, queryString, params, - isTopLevel, dest, completionTag); + dest, completionTag, context); nested_level--; } PG_CATCH(); @@ -880,10 +881,10 @@ pgss_ProcessUtility(Node *parsetree, const char *queryString, { if (prev_ProcessUtility) prev_ProcessUtility(parsetree, queryString, params, - isTopLevel, dest, completionTag); + dest, completionTag, context); else standard_ProcessUtility(parsetree, queryString, params, - isTopLevel, dest, completionTag); + dest, completionTag, context); } } |
