Add \timing patch to psql. Times all queries.
Greg Sabino Mullane
This commit is contained in:
parent
294f0d4bd6
commit
25b0b09fd3
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$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
|
|||||||
</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 @@
|
|||||||
*
|
*
|
||||||
* 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,
|
|||||||
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 @@
|
|||||||
*
|
*
|
||||||
* 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 @@
|
|||||||
|
|
||||||
#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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
|||||||
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 @@
|
|||||||
*
|
*
|
||||||
* 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)
|
|||||||
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 @@
|
|||||||
*
|
*
|
||||||
* 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
|
|||||||
|
|
||||||
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 @@
|
|||||||
*
|
*
|
||||||
* 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)
|
|||||||
"\\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 */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user