mirror of https://github.com/citusdata/citus.git
Return early for common commands in the utility hook (#3031)
We started copying parse trees by default further on in `multi_ProcessUtility`. That's not a problem for maintenance command, but might register for things like `PREPARE` and `EXECUTE`, which might happen thousands of times per second. Add a few common commands to the check at the start.pull/3015/head
parent
3e465a6449
commit
32a11bdf6c
|
@ -53,6 +53,7 @@
|
||||||
#include "distributed/version_compat.h"
|
#include "distributed/version_compat.h"
|
||||||
#include "distributed/worker_transaction.h"
|
#include "distributed/worker_transaction.h"
|
||||||
#include "lib/stringinfo.h"
|
#include "lib/stringinfo.h"
|
||||||
|
#include "nodes/parsenodes.h"
|
||||||
#include "nodes/pg_list.h"
|
#include "nodes/pg_list.h"
|
||||||
#include "tcop/utility.h"
|
#include "tcop/utility.h"
|
||||||
#include "utils/builtins.h"
|
#include "utils/builtins.h"
|
||||||
|
@ -116,9 +117,19 @@ multi_ProcessUtility(PlannedStmt *pstmt,
|
||||||
List *ddlJobs = NIL;
|
List *ddlJobs = NIL;
|
||||||
bool checkExtensionVersion = false;
|
bool checkExtensionVersion = false;
|
||||||
|
|
||||||
if (IsA(parsetree, TransactionStmt))
|
if (IsA(parsetree, TransactionStmt) ||
|
||||||
|
IsA(parsetree, LockStmt) ||
|
||||||
|
IsA(parsetree, ListenStmt) ||
|
||||||
|
IsA(parsetree, NotifyStmt) ||
|
||||||
|
IsA(parsetree, ExecuteStmt) ||
|
||||||
|
IsA(parsetree, PrepareStmt) ||
|
||||||
|
IsA(parsetree, DiscardStmt) ||
|
||||||
|
IsA(parsetree, DeallocateStmt))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
* Skip additional checks for common commands that do not have any
|
||||||
|
* Citus-specific logic.
|
||||||
|
*
|
||||||
* Transaction statements (e.g. ABORT, COMMIT) can be run in aborted
|
* Transaction statements (e.g. ABORT, COMMIT) can be run in aborted
|
||||||
* transactions in which case a lot of checks cannot be done safely in
|
* transactions in which case a lot of checks cannot be done safely in
|
||||||
* that state. Since we never need to intercept transaction statements,
|
* that state. Since we never need to intercept transaction statements,
|
||||||
|
|
Loading…
Reference in New Issue