Commit 25b0b09f authored by Bruce Momjian's avatar Bruce Momjian

Add \timing patch to psql. Times all queries.

Greg Sabino Mullane
parent 294f0d4b
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.61 2001/12/08 03:24:38 thomas Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.62 2002/03/05 00:00:58 momjian Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -1119,6 +1119,16 @@ lo_import 152801 ...@@ -1119,6 +1119,16 @@ lo_import 152801
</varlistentry> </varlistentry>
<varlistentry>
<term><literal>\timing</literal>
<listitem>
<para>
Toggles a display of how long each query takes in seconds.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><literal>\w</literal> {<replaceable class="parameter">filename</replaceable> | <replaceable class="parameter">|command</replaceable>}</term> <term><literal>\w</literal> {<replaceable class="parameter">filename</replaceable> | <replaceable class="parameter">|command</replaceable>}</term>
<listitem> <listitem>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.66 2002/02/25 21:37:42 tgl Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.67 2002/03/05 00:01:00 momjian Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "command.h" #include "command.h"
...@@ -715,6 +715,24 @@ exec_command(const char *cmd, ...@@ -715,6 +715,24 @@ exec_command(const char *cmd,
free(value); free(value);
} }
/* \timing -- toggle timing of queries */
else if (strcmp(cmd, "timing") == 0)
{
pset.timing = !pset.timing;
if (!quiet)
{
if (pset.timing)
{
puts(gettext(("Timing is on.")));
}
else
{
puts(gettext(("Timing is off.")));
}
}
}
/* \unset */ /* \unset */
else if (strcmp(cmd, "unset") == 0) else if (strcmp(cmd, "unset") == 0)
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.38 2001/11/05 17:46:30 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.39 2002/03/05 00:01:00 momjian Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <errno.h> #include <errno.h>
#include <stdarg.h> #include <stdarg.h>
#include <sys/time.h>
#ifdef HAVE_TERMIOS_H #ifdef HAVE_TERMIOS_H
#include <termios.h> #include <termios.h>
#endif #endif
...@@ -406,6 +407,8 @@ SendQuery(const char *query) ...@@ -406,6 +407,8 @@ SendQuery(const char *query)
bool success = false; bool success = false;
PGresult *results; PGresult *results;
PGnotify *notify; PGnotify *notify;
struct timeval before,after;
struct timezone tz;
if (!pset.db) if (!pset.db)
{ {
...@@ -435,7 +438,15 @@ SendQuery(const char *query) ...@@ -435,7 +438,15 @@ SendQuery(const char *query)
} }
cancelConn = pset.db; cancelConn = pset.db;
if (pset.timing)
{
gettimeofday(&before, &tz);
}
results = PQexec(pset.db, query); results = PQexec(pset.db, query);
if (pset.timing)
{
gettimeofday(&after, &tz);
}
if (PQresultStatus(results) == PGRES_COPY_IN) if (PQresultStatus(results) == PGRES_COPY_IN)
copy_in_state = true; copy_in_state = true;
/* keep cancel connection for copy out state */ /* keep cancel connection for copy out state */
...@@ -565,5 +576,12 @@ SendQuery(const char *query) ...@@ -565,5 +576,12 @@ SendQuery(const char *query)
PQclear(results); PQclear(results);
} }
/* Possible microtiming output */
if (pset.timing && success)
{
! printf(gettext("Total time: %.3fs\n"), ((after.tv_sec-before.tv_sec)*1000000 + after.tv_usec - before.tv_usec) / 1000000.0);
}
return success; return success;
} }
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.42 2001/10/25 05:49:54 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.43 2002/03/05 00:01:01 momjian Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "help.h" #include "help.h"
...@@ -229,6 +229,8 @@ slashUsage(void) ...@@ -229,6 +229,8 @@ slashUsage(void)
fprintf(fout, _(" \\t show only rows (currently %s)\n"), fprintf(fout, _(" \\t show only rows (currently %s)\n"),
ON(pset.popt.topt.tuples_only)); ON(pset.popt.topt.tuples_only));
fprintf(fout, _(" \\T TEXT set HTML table tag attributes\n")); fprintf(fout, _(" \\T TEXT set HTML table tag attributes\n"));
fprintf(fout, _(" \\timing toggle timing of queries (currently %s)\n"),
ON(pset.timing));
fprintf(fout, _(" \\unset NAME unset (delete) internal variable\n")); fprintf(fout, _(" \\unset NAME unset (delete) internal variable\n"));
fprintf(fout, _(" \\w FILENAME write current query buffer to file\n")); fprintf(fout, _(" \\w FILENAME write current query buffer to file\n"));
fprintf(fout, _(" \\x toggle expanded output (currently %s)\n"), fprintf(fout, _(" \\x toggle expanded output (currently %s)\n"),
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/settings.h,v 1.12 2001/10/28 06:25:58 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/settings.h,v 1.13 2002/03/05 00:01:02 momjian Exp $
*/ */
#ifndef SETTINGS_H #ifndef SETTINGS_H
#define SETTINGS_H #define SETTINGS_H
...@@ -50,6 +50,7 @@ typedef struct _psqlSettings ...@@ -50,6 +50,7 @@ typedef struct _psqlSettings
bool issuper; /* is the current user a superuser? (used bool issuper; /* is the current user a superuser? (used
* to form the prompt) */ * to form the prompt) */
bool timing; /* timing of all queries */
} PsqlSettings; } PsqlSettings;
extern PsqlSettings pset; extern PsqlSettings pset;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright 2000 by PostgreSQL Global Development Group * Copyright 2000 by PostgreSQL Global Development Group
* *
* $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.42 2002/03/02 21:39:34 momjian Exp $ * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.43 2002/03/05 00:01:03 momjian Exp $
*/ */
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
...@@ -276,8 +276,8 @@ psql_completion(char *text, int start, int end) ...@@ -276,8 +276,8 @@ psql_completion(char *text, int start, int end)
"\\e", "\\echo", "\\e", "\\echo",
"\\encoding", "\\g", "\\h", "\\i", "\\l", "\\encoding", "\\g", "\\h", "\\i", "\\l",
"\\lo_import", "\\lo_export", "\\lo_list", "\\lo_unlink", "\\lo_import", "\\lo_export", "\\lo_list", "\\lo_unlink",
"\\o", "\\p", "\\pset", "\\q", "\\qecho", "\\r", "\\set", "\\t", "\\unset", "\\o", "\\p", "\\pset", "\\q", "\\qecho", "\\r", "\\set", "\\t",
"\\x", "\\w", "\\z", "\\!", NULL "\\timing", "\\unset", "\\x", "\\w", "\\z", "\\!", NULL
}; };
(void) end; /* not used */ (void) end; /* not used */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment