mirror of https://github.com/citusdata/citus.git
EXPLAIN (MEMORY) is added, make changes to ExplainOnePlan
Relevant PG commit:
5de890e3610d5a12cdaea36413d967cf5c544e20
5de890e361
pg17_kickoff
parent
49f7bffcf6
commit
a23bf8803d
|
@ -373,6 +373,21 @@ ExplainSubPlans(DistributedPlan *distributedPlan, ExplainState *es)
|
||||||
BufferUsage bufusage_start,
|
BufferUsage bufusage_start,
|
||||||
bufusage;
|
bufusage;
|
||||||
|
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_17
|
||||||
|
MemoryContextCounters mem_counters;
|
||||||
|
MemoryContext planner_ctx = NULL;
|
||||||
|
MemoryContext saved_ctx = NULL;
|
||||||
|
|
||||||
|
if (es->memory)
|
||||||
|
{
|
||||||
|
/* copy paste from postgres code */
|
||||||
|
planner_ctx = AllocSetContextCreate(CurrentMemoryContext,
|
||||||
|
"explain analyze planner context",
|
||||||
|
ALLOCSET_DEFAULT_SIZES);
|
||||||
|
saved_ctx = MemoryContextSwitchTo(planner_ctx);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (es->buffers)
|
if (es->buffers)
|
||||||
{
|
{
|
||||||
bufusage_start = pgBufferUsage;
|
bufusage_start = pgBufferUsage;
|
||||||
|
@ -430,8 +445,20 @@ ExplainSubPlans(DistributedPlan *distributedPlan, ExplainState *es)
|
||||||
|
|
||||||
ExplainOpenGroup("PlannedStmt", "PlannedStmt", false, es);
|
ExplainOpenGroup("PlannedStmt", "PlannedStmt", false, es);
|
||||||
|
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_17
|
||||||
|
if (es->memory)
|
||||||
|
{
|
||||||
|
MemoryContextSwitchTo(saved_ctx);
|
||||||
|
MemoryContextMemConsumed(planner_ctx, &mem_counters);
|
||||||
|
}
|
||||||
|
|
||||||
|
ExplainOnePlan(plan, into, es, queryString, params, NULL, &planduration,
|
||||||
|
(es->buffers ? &bufusage : NULL),
|
||||||
|
(es->memory ? &mem_counters : NULL));
|
||||||
|
#else
|
||||||
ExplainOnePlan(plan, into, es, queryString, params, NULL, &planduration,
|
ExplainOnePlan(plan, into, es, queryString, params, NULL, &planduration,
|
||||||
(es->buffers ? &bufusage : NULL));
|
(es->buffers ? &bufusage : NULL));
|
||||||
|
#endif
|
||||||
|
|
||||||
ExplainCloseGroup("PlannedStmt", "PlannedStmt", false, es);
|
ExplainCloseGroup("PlannedStmt", "PlannedStmt", false, es);
|
||||||
ExplainCloseGroup("Subplan", NULL, true, es);
|
ExplainCloseGroup("Subplan", NULL, true, es);
|
||||||
|
@ -1251,6 +1278,21 @@ CitusExplainOneQuery(Query *query, int cursorOptions, IntoClause *into,
|
||||||
BufferUsage bufusage_start,
|
BufferUsage bufusage_start,
|
||||||
bufusage;
|
bufusage;
|
||||||
|
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_17
|
||||||
|
MemoryContextCounters mem_counters;
|
||||||
|
MemoryContext planner_ctx = NULL;
|
||||||
|
MemoryContext saved_ctx = NULL;
|
||||||
|
|
||||||
|
if (es->memory)
|
||||||
|
{
|
||||||
|
/* copy paste from postgres code */
|
||||||
|
planner_ctx = AllocSetContextCreate(CurrentMemoryContext,
|
||||||
|
"explain analyze planner context",
|
||||||
|
ALLOCSET_DEFAULT_SIZES);
|
||||||
|
saved_ctx = MemoryContextSwitchTo(planner_ctx);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (es->buffers)
|
if (es->buffers)
|
||||||
{
|
{
|
||||||
bufusage_start = pgBufferUsage;
|
bufusage_start = pgBufferUsage;
|
||||||
|
@ -1284,9 +1326,23 @@ CitusExplainOneQuery(Query *query, int cursorOptions, IntoClause *into,
|
||||||
BufferUsageAccumDiff(&bufusage, &pgBufferUsage, &bufusage_start);
|
BufferUsageAccumDiff(&bufusage, &pgBufferUsage, &bufusage_start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_17
|
||||||
|
if (es->memory)
|
||||||
|
{
|
||||||
|
MemoryContextSwitchTo(saved_ctx);
|
||||||
|
MemoryContextMemConsumed(planner_ctx, &mem_counters);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* run it (if needed) and produce output */
|
||||||
|
ExplainOnePlan(plan, into, es, queryString, params, queryEnv,
|
||||||
|
&planduration, (es->buffers ? &bufusage : NULL),
|
||||||
|
(es->memory ? &mem_counters : NULL));
|
||||||
|
#else
|
||||||
|
|
||||||
/* run it (if needed) and produce output */
|
/* run it (if needed) and produce output */
|
||||||
ExplainOnePlan(plan, into, es, queryString, params, queryEnv,
|
ExplainOnePlan(plan, into, es, queryString, params, queryEnv,
|
||||||
&planduration, (es->buffers ? &bufusage : NULL));
|
&planduration, (es->buffers ? &bufusage : NULL));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1699,6 +1755,21 @@ ExplainOneQuery(Query *query, int cursorOptions,
|
||||||
BufferUsage bufusage_start,
|
BufferUsage bufusage_start,
|
||||||
bufusage;
|
bufusage;
|
||||||
|
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_17
|
||||||
|
MemoryContextCounters mem_counters;
|
||||||
|
MemoryContext planner_ctx = NULL;
|
||||||
|
MemoryContext saved_ctx = NULL;
|
||||||
|
|
||||||
|
if (es->memory)
|
||||||
|
{
|
||||||
|
/* copy paste from postgres code */
|
||||||
|
planner_ctx = AllocSetContextCreate(CurrentMemoryContext,
|
||||||
|
"explain analyze planner context",
|
||||||
|
ALLOCSET_DEFAULT_SIZES);
|
||||||
|
saved_ctx = MemoryContextSwitchTo(planner_ctx);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (es->buffers)
|
if (es->buffers)
|
||||||
bufusage_start = pgBufferUsage;
|
bufusage_start = pgBufferUsage;
|
||||||
INSTR_TIME_SET_CURRENT(planstart);
|
INSTR_TIME_SET_CURRENT(planstart);
|
||||||
|
@ -1716,9 +1787,21 @@ ExplainOneQuery(Query *query, int cursorOptions,
|
||||||
BufferUsageAccumDiff(&bufusage, &pgBufferUsage, &bufusage_start);
|
BufferUsageAccumDiff(&bufusage, &pgBufferUsage, &bufusage_start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if PG_VERSION_NUM >= PG_VERSION_17
|
||||||
|
if (es->memory)
|
||||||
|
{
|
||||||
|
MemoryContextSwitchTo(saved_ctx);
|
||||||
|
MemoryContextMemConsumed(planner_ctx, &mem_counters);
|
||||||
|
}
|
||||||
|
/* run it (if needed) and produce output */
|
||||||
|
ExplainOnePlan(plan, into, es, queryString, params, queryEnv,
|
||||||
|
&planduration, (es->buffers ? &bufusage : NULL),
|
||||||
|
(es->memory ? &mem_counters : NULL));
|
||||||
|
#else
|
||||||
/* run it (if needed) and produce output */
|
/* run it (if needed) and produce output */
|
||||||
ExplainOnePlan(plan, into, es, queryString, params, queryEnv,
|
ExplainOnePlan(plan, into, es, queryString, params, queryEnv,
|
||||||
&planduration, (es->buffers ? &bufusage : NULL));
|
&planduration, (es->buffers ? &bufusage : NULL));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue