diff options
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 2710db12321..c9408970b10 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -71,10 +71,10 @@ ProcessUtility_hook_type ProcessUtility_hook = NULL; /* local function declarations */ static void ProcessUtilitySlow(Node *parsetree, const char *queryString, + ProcessUtilityContext context, ParamListInfo params, DestReceiver *dest, - char *completionTag, - ProcessUtilityContext context); + char *completionTag); static void ExecDropStmt(DropStmt *stmt, bool isTopLevel); @@ -314,8 +314,9 @@ CheckRestrictedOperation(const char *cmdname) * * parsetree: the parse tree for the utility statement * queryString: original source text of command + * context: identifies source of statement (toplevel client command, + * non-toplevel client command, subcommand of a larger utility command) * params: parameters to use during execution - * isTopLevel: true if executing a "top level" (interactively issued) command * dest: where to send results * completionTag: points to a buffer of size COMPLETION_TAG_BUFSIZE * in which to store a command completion status string. @@ -331,10 +332,10 @@ CheckRestrictedOperation(const char *cmdname) void ProcessUtility(Node *parsetree, const char *queryString, + ProcessUtilityContext context, ParamListInfo params, DestReceiver *dest, - char *completionTag, - ProcessUtilityContext context) + char *completionTag) { Assert(queryString != NULL); /* required as of 8.4 */ @@ -344,11 +345,13 @@ ProcessUtility(Node *parsetree, * call standard_ProcessUtility(). */ if (ProcessUtility_hook) - (*ProcessUtility_hook) (parsetree, queryString, params, - dest, completionTag, context); + (*ProcessUtility_hook) (parsetree, queryString, + context, params, + dest, completionTag); else - standard_ProcessUtility(parsetree, queryString, params, - dest, completionTag, context); + standard_ProcessUtility(parsetree, queryString, + context, params, + dest, completionTag); } /* @@ -365,10 +368,10 @@ ProcessUtility(Node *parsetree, void standard_ProcessUtility(Node *parsetree, const char *queryString, + ProcessUtilityContext context, ParamListInfo params, DestReceiver *dest, - char *completionTag, - ProcessUtilityContext context) + char *completionTag) { bool isTopLevel = (context == PROCESS_UTILITY_TOPLEVEL); @@ -817,8 +820,9 @@ standard_ProcessUtility(Node *parsetree, DropStmt *stmt = (DropStmt *) parsetree; if (EventTriggerSupportsObjectType(stmt->removeType)) - ProcessUtilitySlow(parsetree, queryString, params, - dest, completionTag, context); + ProcessUtilitySlow(parsetree, queryString, + context, params, + dest, completionTag); else ExecDropStmt(stmt, isTopLevel); } @@ -829,8 +833,9 @@ standard_ProcessUtility(Node *parsetree, RenameStmt *stmt = (RenameStmt *) parsetree; if (EventTriggerSupportsObjectType(stmt->renameType)) - ProcessUtilitySlow(parsetree, queryString, params, - dest, completionTag, context); + ProcessUtilitySlow(parsetree, queryString, + context, params, + dest, completionTag); else ExecRenameStmt(stmt); } @@ -841,8 +846,9 @@ standard_ProcessUtility(Node *parsetree, AlterObjectSchemaStmt *stmt = (AlterObjectSchemaStmt *) parsetree; if (EventTriggerSupportsObjectType(stmt->objectType)) - ProcessUtilitySlow(parsetree, queryString, params, - dest, completionTag, context); + ProcessUtilitySlow(parsetree, queryString, + context, params, + dest, completionTag); else ExecAlterObjectSchemaStmt(stmt); } @@ -853,8 +859,9 @@ standard_ProcessUtility(Node *parsetree, AlterOwnerStmt *stmt = (AlterOwnerStmt *) parsetree; if (EventTriggerSupportsObjectType(stmt->objectType)) - ProcessUtilitySlow(parsetree, queryString, params, - dest, completionTag, context); + ProcessUtilitySlow(parsetree, queryString, + context, params, + dest, completionTag); else ExecAlterOwnerStmt(stmt); } @@ -862,8 +869,9 @@ standard_ProcessUtility(Node *parsetree, default: /* All other statement types have event trigger support */ - ProcessUtilitySlow(parsetree, queryString, params, - dest, completionTag, context); + ProcessUtilitySlow(parsetree, queryString, + context, params, + dest, completionTag); break; } } @@ -876,10 +884,10 @@ standard_ProcessUtility(Node *parsetree, static void ProcessUtilitySlow(Node *parsetree, const char *queryString, + ProcessUtilityContext context, ParamListInfo params, DestReceiver *dest, - char *completionTag, - ProcessUtilityContext context) + char *completionTag) { bool isTopLevel = (context == PROCESS_UTILITY_TOPLEVEL); bool isCompleteQuery = (context <= PROCESS_UTILITY_QUERY); @@ -966,10 +974,10 @@ ProcessUtilitySlow(Node *parsetree, /* Recurse for anything else */ ProcessUtility(stmt, queryString, + PROCESS_UTILITY_SUBCOMMAND, params, None_Receiver, - NULL, - PROCESS_UTILITY_GENERATED); + NULL); } /* Need CCI between commands */ @@ -1017,10 +1025,10 @@ ProcessUtilitySlow(Node *parsetree, /* Recurse for anything else */ ProcessUtility(stmt, queryString, + PROCESS_UTILITY_SUBCOMMAND, params, None_Receiver, - NULL, - PROCESS_UTILITY_GENERATED); + NULL); } /* Need CCI between commands */ |