diff options
Diffstat (limited to 'src/include/commands/explain.h')
-rw-r--r-- | src/include/commands/explain.h | 80 |
1 files changed, 13 insertions, 67 deletions
diff --git a/src/include/commands/explain.h b/src/include/commands/explain.h index 64547bd9b9c..783f67b468a 100644 --- a/src/include/commands/explain.h +++ b/src/include/commands/explain.h @@ -14,70 +14,15 @@ #define EXPLAIN_H #include "executor/executor.h" -#include "lib/stringinfo.h" #include "parser/parse_node.h" -typedef enum ExplainSerializeOption -{ - EXPLAIN_SERIALIZE_NONE, - EXPLAIN_SERIALIZE_TEXT, - EXPLAIN_SERIALIZE_BINARY, -} ExplainSerializeOption; - -typedef enum ExplainFormat -{ - EXPLAIN_FORMAT_TEXT, - EXPLAIN_FORMAT_XML, - EXPLAIN_FORMAT_JSON, - EXPLAIN_FORMAT_YAML, -} ExplainFormat; - -typedef struct ExplainWorkersState -{ - int num_workers; /* # of worker processes the plan used */ - bool *worker_inited; /* per-worker state-initialized flags */ - StringInfoData *worker_str; /* per-worker transient output buffers */ - int *worker_state_save; /* per-worker grouping state save areas */ - StringInfo prev_str; /* saved output buffer while redirecting */ -} ExplainWorkersState; - -typedef struct ExplainState -{ - StringInfo str; /* output buffer */ - /* options */ - bool verbose; /* be verbose */ - bool analyze; /* print actual times */ - bool costs; /* print estimated costs */ - bool buffers; /* print buffer usage */ - bool wal; /* print WAL usage */ - bool timing; /* print detailed node timing */ - bool summary; /* print total planning and execution timing */ - bool memory; /* print planner's memory usage information */ - bool settings; /* print modified settings */ - bool generic; /* generate a generic plan */ - ExplainSerializeOption serialize; /* serialize the query's output? */ - ExplainFormat format; /* output format */ - /* state for output formatting --- not reset for each new plan tree */ - int indent; /* current indentation level */ - List *grouping_stack; /* format-specific grouping state */ - /* state related to the current plan tree (filled by ExplainPrintPlan) */ - PlannedStmt *pstmt; /* top of plan */ - List *rtable; /* range table */ - List *rtable_names; /* alias names for RTEs */ - List *deparse_cxt; /* context list for deparsing expressions */ - Bitmapset *printed_subplans; /* ids of SubPlans we've printed */ - bool hide_workers; /* set if we find an invisible Gather */ - int rtable_size; /* length of rtable excluding the RTE_GROUP - * entry */ - /* state related to the current plan node */ - ExplainWorkersState *workers_state; /* needed if parallel plan */ -} ExplainState; +struct ExplainState; /* defined in explain_state.h */ /* Hook for plugins to get control in ExplainOneQuery() */ typedef void (*ExplainOneQuery_hook_type) (Query *query, int cursorOptions, IntoClause *into, - ExplainState *es, + struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); @@ -91,33 +36,34 @@ extern PGDLLIMPORT explain_get_index_name_hook_type explain_get_index_name_hook; extern void ExplainQuery(ParseState *pstate, ExplainStmt *stmt, ParamListInfo params, DestReceiver *dest); extern void standard_ExplainOneQuery(Query *query, int cursorOptions, - IntoClause *into, ExplainState *es, + IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); -extern ExplainState *NewExplainState(void); - extern TupleDesc ExplainResultDesc(ExplainStmt *stmt); extern void ExplainOneUtility(Node *utilityStmt, IntoClause *into, - ExplainState *es, ParseState *pstate, + struct ExplainState *es, ParseState *pstate, ParamListInfo params); extern void ExplainOnePlan(PlannedStmt *plannedstmt, CachedPlan *cplan, CachedPlanSource *plansource, int plan_index, - IntoClause *into, ExplainState *es, + IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv, const instr_time *planduration, const BufferUsage *bufusage, const MemoryContextCounters *mem_counters); -extern void ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc); -extern void ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc); +extern void ExplainPrintPlan(struct ExplainState *es, QueryDesc *queryDesc); +extern void ExplainPrintTriggers(struct ExplainState *es, + QueryDesc *queryDesc); -extern void ExplainPrintJITSummary(ExplainState *es, QueryDesc *queryDesc); +extern void ExplainPrintJITSummary(struct ExplainState *es, + QueryDesc *queryDesc); -extern void ExplainQueryText(ExplainState *es, QueryDesc *queryDesc); -extern void ExplainQueryParameters(ExplainState *es, ParamListInfo params, int maxlen); +extern void ExplainQueryText(struct ExplainState *es, QueryDesc *queryDesc); +extern void ExplainQueryParameters(struct ExplainState *es, + ParamListInfo params, int maxlen); #endif /* EXPLAIN_H */ |