58 elog(
ERROR,
"InstrStart called twice in a row");
84 elog(
ERROR,
"InstrStop called without start");
211 elog(
ERROR,
"InstrEndLoop called on running node");
238 dst->ntuples +=
add->ntuples;
239 dst->ntuples2 +=
add->ntuples2;
240 dst->nloops +=
add->nloops;
241 dst->nfiltered1 +=
add->nfiltered1;
242 dst->nfiltered2 +=
add->nfiltered2;
244 if (
dst->instr.need_bufusage)
247 if (
dst->instr.need_walusage)
258 for (
i = 0;
i < n;
i++)
307 dst->shared_blks_hit +=
add->shared_blks_hit;
308 dst->shared_blks_read +=
add->shared_blks_read;
309 dst->shared_blks_dirtied +=
add->shared_blks_dirtied;
310 dst->shared_blks_written +=
add->shared_blks_written;
311 dst->local_blks_hit +=
add->local_blks_hit;
312 dst->local_blks_read +=
add->local_blks_read;
313 dst->local_blks_dirtied +=
add->local_blks_dirtied;
314 dst->local_blks_written +=
add->local_blks_written;
315 dst->temp_blks_read +=
add->temp_blks_read;
316 dst->temp_blks_written +=
add->temp_blks_written;
359 dst->wal_bytes +=
add->wal_bytes;
360 dst->wal_records +=
add->wal_records;
361 dst->wal_fpi +=
add->wal_fpi;
362 dst->wal_fpi_bytes +=
add->wal_fpi_bytes;
363 dst->wal_buffers_full +=
add->wal_buffers_full;
395#if PG_INSTR_TSC_CLOCK
431#if PG_INSTR_TSC_CLOCK
435 return "auto (system)";
438#if PG_INSTR_TSC_CLOCK
#define Assert(condition)
#define palloc_object(type)
#define palloc0_array(type, count)
#define palloc0_object(type)
#define GUC_check_errdetail
int32 timing_tsc_frequency_khz
bool pg_set_timing_clock_source(TimingClockSourceType source)
#define INSTR_TIME_ADD(x, y)
#define INSTR_TIME_IS_ZERO(t)
#define INSTR_TIME_SET_CURRENT_FAST(t)
static TimingClockSourceType pg_current_timing_clock_source(void)
@ TIMING_CLOCK_SOURCE_SYSTEM
@ TIMING_CLOCK_SOURCE_AUTO
#define INSTR_TIME_SET_ZERO(t)
#define INSTR_TIME_ACCUM_DIFF(x, y, z)
bool check_timing_clock_source(int *newval, void **extra, GucSource source)
void InstrAccumParallelQuery(BufferUsage *bufusage, WalUsage *walusage)
void InstrStart(Instrumentation *instr)
static void BufferUsageAdd(BufferUsage *dst, const BufferUsage *add)
void InstrUpdateTupleCount(NodeInstrumentation *instr, double nTuples)
static BufferUsage save_pgBufferUsage
void InstrInitNode(NodeInstrumentation *instr, int instrument_options, bool async_mode)
void InstrStop(Instrumentation *instr)
void InstrEndParallelQuery(BufferUsage *bufusage, WalUsage *walusage)
const char * show_timing_clock_source(void)
static WalUsage save_pgWalUsage
static void WalUsageAdd(WalUsage *dst, WalUsage *add)
TupleTableSlot * ExecProcNodeInstr(PlanState *node)
void InstrStartNode(NodeInstrumentation *instr)
void WalUsageAccumDiff(WalUsage *dst, const WalUsage *add, const WalUsage *sub)
void InstrStartParallelQuery(void)
void InstrInitOptions(Instrumentation *instr, int instrument_options)
static void InstrStopCommon(Instrumentation *instr, instr_time *accum_time)
Instrumentation * InstrAlloc(int instrument_options)
TriggerInstrumentation * InstrAllocTrigger(int n, int instrument_options)
BufferUsage pgBufferUsage
void InstrStopNode(NodeInstrumentation *instr, double nTuples)
void BufferUsageAccumDiff(BufferUsage *dst, const BufferUsage *add, const BufferUsage *sub)
void InstrEndLoop(NodeInstrumentation *instr)
NodeInstrumentation * InstrAllocNode(int instrument_options, bool async_mode)
void InstrStartTrigger(TriggerInstrumentation *tginstr)
void InstrAggNode(NodeInstrumentation *dst, NodeInstrumentation *add)
void InstrStopTrigger(TriggerInstrumentation *tginstr, int64 firings)
void assign_timing_clock_source(int newval, void *extra)
static rewind_source * source
instr_time local_blk_read_time
int64 shared_blks_dirtied
instr_time temp_blk_write_time
instr_time shared_blk_read_time
instr_time shared_blk_write_time
instr_time temp_blk_read_time
instr_time local_blk_write_time
int64 shared_blks_written
BufferUsage bufusage_start
ExecProcNodeMtd ExecProcNodeReal
NodeInstrumentation * instrument