Re: \timing on/off - Mailing list pgsql-patches
From | Heikki Linnakangas |
---|---|
Subject | Re: \timing on/off |
Date | |
Msg-id | 484E4834.7050401@enterprisedb.com Whole thread Raw |
In response to | \timing on/off ("Heikki Linnakangas" <heikki@enterprisedb.com>) |
Responses |
Re: \timing on/off
|
List | pgsql-patches |
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 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 ----
pgsql-patches by date: