summaryrefslogtreecommitdiff
path: root/src/backend/executor/instrument.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/instrument.c')
-rw-r--r--src/backend/executor/instrument.c122
1 files changed, 0 insertions, 122 deletions
diff --git a/src/backend/executor/instrument.c b/src/backend/executor/instrument.c
deleted file mode 100644
index 3b95544706b..00000000000
--- a/src/backend/executor/instrument.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * instrument.c
- * functions for instrumentation of plan execution
- *
- *
- * Copyright (c) 2001, PostgreSQL Global Development Group
- *
- * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/instrument.c,v 1.3 2002/03/02 21:39:25 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
-#include "postgres.h"
-
-#include <unistd.h>
-
-#include "executor/instrument.h"
-
-
-/* Allocate new instrumentation structure */
-Instrumentation *
-InstrAlloc(void)
-{
- Instrumentation *instr = palloc(sizeof(Instrumentation));
-
- memset(instr, 0, sizeof(Instrumentation));
-
- return instr;
-}
-
-/* Entry to a plan node */
-void
-InstrStartNode(Instrumentation *instr)
-{
- if (!instr)
- return;
-
- if (instr->starttime.tv_sec != 0 || instr->starttime.tv_usec != 0)
- elog(LOG, "InstrStartTimer called twice in a row");
- else
- gettimeofday(&instr->starttime, NULL);
-}
-
-/* Exit from a plan node */
-void
-InstrStopNode(Instrumentation *instr, bool returnedTuple)
-{
- struct timeval endtime;
-
- if (!instr)
- return;
-
- if (instr->starttime.tv_sec == 0 && instr->starttime.tv_usec == 0)
- {
- elog(LOG, "InstrStopNode without start");
- return;
- }
-
- gettimeofday(&endtime, NULL);
-
- instr->counter.tv_sec += endtime.tv_sec - instr->starttime.tv_sec;
- instr->counter.tv_usec += endtime.tv_usec - instr->starttime.tv_usec;
-
- /* Normalize after each add to avoid overflow/underflow of tv_usec */
- while (instr->counter.tv_usec < 0)
- {
- instr->counter.tv_usec += 1000000;
- instr->counter.tv_sec--;
- }
- while (instr->counter.tv_usec >= 1000000)
- {
- instr->counter.tv_usec -= 1000000;
- instr->counter.tv_sec++;
- }
-
- instr->starttime.tv_sec = 0;
- instr->starttime.tv_usec = 0;
-
- /* Is this the first tuple of this cycle? */
- if (!instr->running)
- {
- instr->running = true;
- instr->firsttuple = (double) instr->counter.tv_sec +
- (double) instr->counter.tv_usec / 1000000.0;
- }
-
- if (returnedTuple)
- instr->tuplecount += 1;
-}
-
-/* Finish a run cycle for a plan node */
-void
-InstrEndLoop(Instrumentation *instr)
-{
- double totaltime;
-
- if (!instr)
- return;
-
- /* Skip if nothing has happened, or already shut down */
- if (!instr->running)
- return;
-
- /* Accumulate statistics */
- totaltime = (double) instr->counter.tv_sec +
- (double) instr->counter.tv_usec / 1000000.0;
-
- instr->startup += instr->firsttuple;
- instr->total += totaltime;
- instr->ntuples += instr->tuplecount;
- instr->nloops += 1;
-
- /* Reset for next cycle (if any) */
- instr->running = false;
- instr->starttime.tv_sec = 0;
- instr->starttime.tv_usec = 0;
- instr->counter.tv_sec = 0;
- instr->counter.tv_usec = 0;
- instr->firsttuple = 0;
- instr->tuplecount = 0;
-}