PostgreSQL Source Code git master
explain.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * explain.h
4 * prototypes for explain.c
5 *
6 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994-5, Regents of the University of California
8 *
9 * src/include/commands/explain.h
10 *
11 *-------------------------------------------------------------------------
12 */
13#ifndef EXPLAIN_H
14#define EXPLAIN_H
15
16#include "executor/executor.h"
17#include "parser/parse_node.h"
18
19struct ExplainState; /* defined in explain_state.h */
20
21/* Hook for plugins to get control in ExplainOneQuery() */
22typedef void (*ExplainOneQuery_hook_type) (Query *query,
23 int cursorOptions,
24 IntoClause *into,
25 struct ExplainState *es,
26 const char *queryString,
27 ParamListInfo params,
28 QueryEnvironment *queryEnv);
30
31/* Hook for EXPLAIN plugins to print extra information for each plan */
32typedef void (*explain_per_plan_hook_type) (PlannedStmt *plannedstmt,
33 IntoClause *into,
34 struct ExplainState *es,
35 const char *queryString,
36 ParamListInfo params,
37 QueryEnvironment *queryEnv);
39
40/* Hook for EXPLAIN plugins to print extra fields on individual plan nodes */
41typedef void (*explain_per_node_hook_type) (PlanState *planstate,
42 List *ancestors,
43 const char *relationship,
44 const char *plan_name,
45 struct ExplainState *es);
47
48/* Hook for plugins to get control in explain_get_index_name() */
49typedef const char *(*explain_get_index_name_hook_type) (Oid indexId);
51
52
53extern void ExplainQuery(ParseState *pstate, ExplainStmt *stmt,
55extern void standard_ExplainOneQuery(Query *query, int cursorOptions,
56 IntoClause *into, struct ExplainState *es,
57 const char *queryString, ParamListInfo params,
58 QueryEnvironment *queryEnv);
59
61
62extern void ExplainOneUtility(Node *utilityStmt, IntoClause *into,
63 struct ExplainState *es, ParseState *pstate,
64 ParamListInfo params);
65
66extern void ExplainOnePlan(PlannedStmt *plannedstmt, CachedPlan *cplan,
67 CachedPlanSource *plansource, int query_index,
68 IntoClause *into, struct ExplainState *es,
69 const char *queryString,
70 ParamListInfo params, QueryEnvironment *queryEnv,
71 const instr_time *planduration,
72 const BufferUsage *bufusage,
73 const MemoryContextCounters *mem_counters);
74
75extern void ExplainPrintPlan(struct ExplainState *es, QueryDesc *queryDesc);
76extern void ExplainPrintTriggers(struct ExplainState *es,
77 QueryDesc *queryDesc);
78
79extern void ExplainPrintJITSummary(struct ExplainState *es,
80 QueryDesc *queryDesc);
81
82extern void ExplainQueryText(struct ExplainState *es, QueryDesc *queryDesc);
83extern void ExplainQueryParameters(struct ExplainState *es,
84 ParamListInfo params, int maxlen);
85
86#endif /* EXPLAIN_H */
#define PGDLLIMPORT
Definition: c.h:1291
void ExplainPrintPlan(struct ExplainState *es, QueryDesc *queryDesc)
Definition: explain.c:771
const char *(* explain_get_index_name_hook_type)(Oid indexId)
Definition: explain.h:49
PGDLLIMPORT explain_get_index_name_hook_type explain_get_index_name_hook
Definition: explain.c:53
PGDLLIMPORT ExplainOneQuery_hook_type ExplainOneQuery_hook
Definition: explain.c:50
void ExplainQuery(ParseState *pstate, ExplainStmt *stmt, ParamListInfo params, DestReceiver *dest)
Definition: explain.c:176
void ExplainQueryText(struct ExplainState *es, QueryDesc *queryDesc)
Definition: explain.c:1075
PGDLLIMPORT explain_per_plan_hook_type explain_per_plan_hook
Definition: explain.c:56
void ExplainPrintTriggers(struct ExplainState *es, QueryDesc *queryDesc)
Definition: explain.c:848
TupleDesc ExplainResultDesc(ExplainStmt *stmt)
Definition: explain.c:254
void ExplainPrintJITSummary(struct ExplainState *es, QueryDesc *queryDesc)
Definition: explain.c:891
void ExplainOneUtility(Node *utilityStmt, IntoClause *into, struct ExplainState *es, ParseState *pstate, ParamListInfo params)
Definition: explain.c:391
PGDLLIMPORT explain_per_node_hook_type explain_per_node_hook
Definition: explain.c:57
void(* explain_per_plan_hook_type)(PlannedStmt *plannedstmt, IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv)
Definition: explain.h:32
void ExplainOnePlan(PlannedStmt *plannedstmt, CachedPlan *cplan, CachedPlanSource *plansource, int query_index, IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv, const instr_time *planduration, const BufferUsage *bufusage, const MemoryContextCounters *mem_counters)
Definition: explain.c:495
void standard_ExplainOneQuery(Query *query, int cursorOptions, IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv)
Definition: explain.c:318
void ExplainQueryParameters(struct ExplainState *es, ParamListInfo params, int maxlen)
Definition: explain.c:1090
void(* ExplainOneQuery_hook_type)(Query *query, int cursorOptions, IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv)
Definition: explain.h:22
void(* explain_per_node_hook_type)(PlanState *planstate, List *ancestors, const char *relationship, const char *plan_name, struct ExplainState *es)
Definition: explain.h:41
#define stmt
Definition: indent_codes.h:59
unsigned int Oid
Definition: postgres_ext.h:30
Definition: pg_list.h:54
Definition: nodes.h:135