From 89fa551808e3d4da4325f5ccf20d26d731bc577f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 18 Sep 2001 01:59:07 +0000 Subject: EXPLAIN ANALYZE feature to measure and show actual runtimes and tuple counts alongside the planner's estimates. By Martijn van Oosterhout, with some further work by Tom Lane. --- src/include/executor/instrument.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/include/executor/instrument.h (limited to 'src/include/executor') diff --git a/src/include/executor/instrument.h b/src/include/executor/instrument.h new file mode 100644 index 00000000000..ca6aa4208ab --- /dev/null +++ b/src/include/executor/instrument.h @@ -0,0 +1,39 @@ +/*------------------------------------------------------------------------- + * + * instrument.h + * definitions for run-time statistics collection + * + * + * Copyright (c) 2001, PostgreSQL Global Development Group + * + * $Id: instrument.h,v 1.1 2001/09/18 01:59:06 tgl Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef INSTRUMENT_H +#define INSTRUMENT_H + +#include + + +typedef struct Instrumentation +{ + /* Info about current plan cycle: */ + bool running; /* TRUE if we've completed first tuple */ + struct timeval starttime; /* Start time of current iteration of node */ + struct timeval counter; /* Accumulates runtime for this node */ + double firsttuple; /* Time for first tuple of this cycle */ + double tuplecount; /* Tuples so far this cycle */ + /* Accumulated statistics across all completed cycles: */ + double startup; /* Total startup time (in seconds) */ + double total; /* Total total time (in seconds) */ + double ntuples; /* Total tuples produced */ + double nloops; /* # of run cycles for this node */ +} Instrumentation; + +extern Instrumentation *InstrAlloc(void); +extern void InstrStartNode(Instrumentation *instr); +extern void InstrStopNode(Instrumentation *instr, bool returnedTuple); +extern void InstrEndLoop(Instrumentation *instr); + +#endif /* INSTRUMENT_H */ -- cgit v1.2.3