Re: \timing on/off

"Heikki Linnakangas" <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.patches
Organization EnterpriseDB
Message-ID <[email protected]>
And here is the patch I forgot to attach.

Heikki Linnakangas wrote:
> I started to look at David Fetter's patch to enable "\timing on/off", in 
> addition to toggling the mod with just "\timing".
> 
> I gather that the conclusion of the thread "Making sure \timing is on", 
> starting at: 
> http://archives.postgresql.org/pgsql-general/2008-05/msg00324.php
> 
> was that we should leave \H and \a alone for now, because it's not clear 
> what "\H off" would do. And \a is already documented as deprecated; we 
> might want to do that for \H as well.
> 
> Here's a patch, based on David's patch, that turns timing into a \pset 
> variable, and makes \timing an alias for \pset timing. This makes 
> \timing behave the same as \x.
> 
> I also moved the help line from the "External" section into 
> "Formatting". I don't think \timing is "external" in the same sense as 
> \cd or \! are. Rather, it controls the output, like \x or \pset options.
> 


-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com


-- 
Sent via pgsql-patches mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches
timing-onoff-1.patch (text/x-diff, 10.2 KB)
Index: doc/src/sgml/ref/psql-ref.sgml
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/doc/src/sgml/ref/psql-ref.sgml,v
retrieving revision 1.207
diff -c -r1.207 psql-ref.sgml
*** doc/src/sgml/ref/psql-ref.sgml	1 Jun 2008 16:23:08 -0000	1.207
--- doc/src/sgml/ref/psql-ref.sgml	9 Jun 2008 12:19:35 -0000
***************
*** 1721,1726 ****
--- 1721,1739 ----
            </para>
            </listitem>
            </varlistentry>
+ 
+           <varlistentry>
+           <term><literal>timing</literal></term>
+           <listitem>
+           <para>
+           You can specify an optional second argument, if it is provided it
+           may be either <literal>on</literal> or <literal>off</literal> which
+           will enable or disable display of how long each SQL statement takes,
+           in milliseconds. If the second argument is not provided then we will
+           toggle between on and off.
+           </para>
+           </listitem>
+           </varlistentry>
          </variablelist>
          </para>
  
***************
*** 1734,1740 ****
          <para>
          There are various shortcut commands for <command>\pset</command>. See
          <command>\a</command>, <command>\C</command>, <command>\H</command>,
!         <command>\t</command>, <command>\T</command>, and <command>\x</command>.
          </para>
          </tip>
  
--- 1747,1754 ----
          <para>
          There are various shortcut commands for <command>\pset</command>. See
          <command>\a</command>, <command>\C</command>, <command>\H</command>,
!         <command>\t</command>, <command>\T</command>, <command>\x</command>,
!         and <command>\timing</command>.
          </para>
          </tip>
  
***************
*** 1864,1870 ****
         <term><literal>\timing</literal></term>
          <listitem>
          <para>
!          Toggles a display of how long each SQL statement takes, in milliseconds.
          </para>
         </listitem>
        </varlistentry>
--- 1878,1885 ----
         <term><literal>\timing</literal></term>
          <listitem>
          <para>
!          Toggles a display of how long each SQL statement takes. As such it
!          is equivalent to <literal>\pset timing</literal>.
          </para>
         </listitem>
        </varlistentry>
Index: src/bin/psql/command.c
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/bin/psql/command.c,v
retrieving revision 1.189
diff -c -r1.189 command.c
*** src/bin/psql/command.c	14 May 2008 19:10:29 -0000	1.189
--- src/bin/psql/command.c	9 Jun 2008 10:56:25 -0000
***************
*** 290,301 ****
  		char	   *opt = psql_scan_slash_option(scan_state,
  												 OT_WHOLE_LINE, NULL, false);
  
! 		if (pset.timing)
  			INSTR_TIME_SET_CURRENT(before);
  
  		success = do_copy(opt);
  
! 		if (pset.timing && success)
  		{
  			INSTR_TIME_SET_CURRENT(after);
  			INSTR_TIME_SUBTRACT(after, before);
--- 290,301 ----
  		char	   *opt = psql_scan_slash_option(scan_state,
  												 OT_WHOLE_LINE, NULL, false);
  
! 		if (pset.popt.timing)
  			INSTR_TIME_SET_CURRENT(before);
  
  		success = do_copy(opt);
  
! 		if (pset.popt.timing && success)
  		{
  			INSTR_TIME_SET_CURRENT(after);
  			INSTR_TIME_SUBTRACT(after, before);
***************
*** 884,897 ****
  	/* \timing -- toggle timing of queries */
  	else if (strcmp(cmd, "timing") == 0)
  	{
! 		pset.timing = !pset.timing;
! 		if (!pset.quiet)
! 		{
! 			if (pset.timing)
! 				puts(_("Timing is on."));
! 			else
! 				puts(_("Timing is off."));
! 		}
  	}
  
  	/* \unset */
--- 884,894 ----
  	/* \timing -- toggle timing of queries */
  	else if (strcmp(cmd, "timing") == 0)
  	{
! 		char	   *opt = psql_scan_slash_option(scan_state,
! 												 OT_NORMAL, NULL, true);
! 
! 		success = do_pset("timing", opt, &pset.popt, pset.quiet);
! 		free(opt);
  	}
  
  	/* \unset */
***************
*** 1739,1744 ****
--- 1736,1752 ----
  			printf(_("Target width for \"wrapped\" format is %d.\n"), popt->topt.columns);
  	}
  
+ 	/* set timing mode */
+ 	else if (strcmp(param, "timing") == 0)
+ 	{
+ 		if (value)
+ 			popt->timing = ParseVariableBool(value);
+ 		else
+ 			popt->timing = !popt->timing;
+ 		if (!quiet)
+ 			puts(popt->timing ? _("Timing is on.") : _("Timing is off."));
+ 	}
+ 
  	else
  	{
  		psql_error("\\pset: unknown option: %s\n", param);
Index: src/bin/psql/common.c
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/bin/psql/common.c,v
retrieving revision 1.139
diff -c -r1.139 common.c
*** src/bin/psql/common.c	14 May 2008 19:10:29 -0000	1.139
--- src/bin/psql/common.c	9 Jun 2008 10:57:25 -0000
***************
*** 849,855 ****
  		instr_time	before,
  					after;
  
! 		if (pset.timing)
  			INSTR_TIME_SET_CURRENT(before);
  
  		results = PQexec(pset.db, query);
--- 849,855 ----
  		instr_time	before,
  					after;
  
! 		if (pset.popt.timing)
  			INSTR_TIME_SET_CURRENT(before);
  
  		results = PQexec(pset.db, query);
***************
*** 858,864 ****
  		ResetCancelConn();
  		OK = (AcceptResult(results) && ProcessCopyResult(results));
  
! 		if (pset.timing)
  		{
  			INSTR_TIME_SET_CURRENT(after);
  			INSTR_TIME_SUBTRACT(after, before);
--- 858,864 ----
  		ResetCancelConn();
  		OK = (AcceptResult(results) && ProcessCopyResult(results));
  
! 		if (pset.popt.timing)
  		{
  			INSTR_TIME_SET_CURRENT(after);
  			INSTR_TIME_SUBTRACT(after, before);
***************
*** 920,926 ****
  	PQclear(results);
  
  	/* Possible microtiming output */
! 	if (OK && pset.timing && !pset.quiet)
  		printf(_("Time: %.3f ms\n"), elapsed_msec);
  
  	/* check for events that may occur during query execution */
--- 920,926 ----
  	PQclear(results);
  
  	/* Possible microtiming output */
! 	if (OK && pset.popt.timing && !pset.quiet)
  		printf(_("Time: %.3f ms\n"), elapsed_msec);
  
  	/* check for events that may occur during query execution */
***************
*** 974,980 ****
  	my_popt.topt.stop_table = false;
  	my_popt.topt.prior_records = 0;
  
! 	if (pset.timing)
  		INSTR_TIME_SET_CURRENT(before);
  
  	/* if we're not in a transaction, start one */
--- 974,980 ----
  	my_popt.topt.stop_table = false;
  	my_popt.topt.prior_records = 0;
  
! 	if (pset.popt.timing)
  		INSTR_TIME_SET_CURRENT(before);
  
  	/* if we're not in a transaction, start one */
***************
*** 1002,1008 ****
  	if (!OK)
  		goto cleanup;
  
! 	if (pset.timing)
  	{
  		INSTR_TIME_SET_CURRENT(after);
  		INSTR_TIME_SUBTRACT(after, before);
--- 1002,1008 ----
  	if (!OK)
  		goto cleanup;
  
! 	if (pset.popt.timing)
  	{
  		INSTR_TIME_SET_CURRENT(after);
  		INSTR_TIME_SUBTRACT(after, before);
***************
*** 1031,1043 ****
  
  	for (;;)
  	{
! 		if (pset.timing)
  			INSTR_TIME_SET_CURRENT(before);
  
  		/* get FETCH_COUNT tuples at a time */
  		results = PQexec(pset.db, fetch_cmd);
  
! 		if (pset.timing)
  		{
  			INSTR_TIME_SET_CURRENT(after);
  			INSTR_TIME_SUBTRACT(after, before);
--- 1031,1043 ----
  
  	for (;;)
  	{
! 		if (pset.popt.timing)
  			INSTR_TIME_SET_CURRENT(before);
  
  		/* get FETCH_COUNT tuples at a time */
  		results = PQexec(pset.db, fetch_cmd);
  
! 		if (pset.popt.timing)
  		{
  			INSTR_TIME_SET_CURRENT(after);
  			INSTR_TIME_SUBTRACT(after, before);
***************
*** 1116,1122 ****
  	}
  
  cleanup:
! 	if (pset.timing)
  		INSTR_TIME_SET_CURRENT(before);
  
  	/*
--- 1116,1122 ----
  	}
  
  cleanup:
! 	if (pset.popt.timing)
  		INSTR_TIME_SET_CURRENT(before);
  
  	/*
***************
*** 1140,1146 ****
  		PQclear(results);
  	}
  
! 	if (pset.timing)
  	{
  		INSTR_TIME_SET_CURRENT(after);
  		INSTR_TIME_SUBTRACT(after, before);
--- 1140,1146 ----
  		PQclear(results);
  	}
  
! 	if (pset.popt.timing)
  	{
  		INSTR_TIME_SET_CURRENT(after);
  		INSTR_TIME_SUBTRACT(after, before);
Index: src/bin/psql/help.c
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/bin/psql/help.c,v
retrieving revision 1.128
diff -c -r1.128 help.c
*** src/bin/psql/help.c	16 May 2008 17:17:00 -0000	1.128
--- src/bin/psql/help.c	9 Jun 2008 12:27:48 -0000
***************
*** 233,238 ****
--- 233,240 ----
  	fprintf(output, _("  \\T [STRING]    set HTML <table> tag attributes, or unset if none\n"));
  	fprintf(output, _("  \\x             toggle expanded output (currently %s)\n"),
  			ON(pset.popt.topt.expanded));
+ 	fprintf(output, _("  \\timing        toggle timing of commands (currently %s)\n"),
+ 			ON(pset.popt.timing));
  	fprintf(output, "\n");
  
  	fprintf(output, _("Connection\n"));
***************
*** 245,252 ****
  
  	fprintf(output, _("External\n"));
  	fprintf(output, _("  \\cd [DIR]      change the current working directory\n"));
- 	fprintf(output, _("  \\timing        toggle timing of commands (currently %s)\n"),
- 			ON(pset.timing));
  	fprintf(output, _("  \\! [COMMAND]   execute command in shell or start interactive shell\n"));
  	fprintf(output, "\n");
  
--- 247,252 ----
Index: src/bin/psql/print.h
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/bin/psql/print.h,v
retrieving revision 1.37
diff -c -r1.37 print.h
*** src/bin/psql/print.h	12 May 2008 22:59:58 -0000	1.37
--- src/bin/psql/print.h	9 Jun 2008 10:55:47 -0000
***************
*** 92,97 ****
--- 92,98 ----
  	bool		default_footer; /* print default footer if footers==NULL */
  	bool		trans_headers;	/* do gettext on column headers */
  	const bool *trans_columns;	/* trans_columns[i-1] => do gettext on col i */
+ 	bool		timing;			/* enable timing of all queries */
  } printQueryOpt;
  
  
Index: src/bin/psql/settings.h
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/bin/psql/settings.h,v
retrieving revision 1.33
diff -c -r1.33 settings.h
*** src/bin/psql/settings.h	1 Jan 2008 19:45:56 -0000	1.33
--- src/bin/psql/settings.h	9 Jun 2008 10:53:26 -0000
***************
*** 80,87 ****
  
  	uint64		lineno;			/* also for error reporting */
  
- 	bool		timing;			/* enable timing of all queries */
- 
  	FILE	   *logfile;		/* session log file handle */
  
  	VariableSpace vars;			/* "shell variable" repository */
--- 80,85 ----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.