Tom, On 9/8/06, Tom Lane <[EMAIL PROTECTED]> wrote:
It seems like we should either remove the separate log_duration boolean or make it work as he suggests. I'm leaning to the second answer now.
Do you want me to propose a patch or do you prefer to work on it yourself? If so, do we keep the log_duration name or do we change it to log_all_duration or another more appropriate name? I attached the little patch I use to apply on our packages. I can work on it to make it apply to HEAD and update the documentation. I suppose we should also change the FE/BE protocol logging accordingly but ISTM you already planned to change it for other reasons. -- Guillaume
Index: src/backend/tcop/postgres.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/tcop/postgres.c,v retrieving revision 1.483 diff -u -r1.483 postgres.c --- src/backend/tcop/postgres.c 4 Apr 2006 19:35:35 -0000 1.483 +++ src/backend/tcop/postgres.c 6 Apr 2006 12:12:00 -0000 @@ -1092,14 +1092,6 @@ usecs = (long) (stop_t.tv_sec - start_t.tv_sec) * 1000000 + (long) (stop_t.tv_usec - start_t.tv_usec); - /* Only print duration if we previously printed the statement. */ - if (was_logged && save_log_duration) - ereport(LOG, - (errmsg("duration: %ld.%03ld ms", - (long) ((stop_t.tv_sec - start_t.tv_sec) * 1000 + - (stop_t.tv_usec - start_t.tv_usec) / 1000), - (long) (stop_t.tv_usec - start_t.tv_usec) % 1000))); - /* * Output a duration_statement to the log if the query has exceeded * the min duration, or if we are to print all durations. @@ -1107,6 +1099,7 @@ if (save_log_min_duration_statement == 0 || (save_log_min_duration_statement > 0 && usecs >= save_log_min_duration_statement * 1000)) + { ereport(LOG, (errmsg("duration: %ld.%03ld ms statement: %s%s", (long) ((stop_t.tv_sec - start_t.tv_sec) * 1000 + @@ -1114,6 +1107,17 @@ (long) (stop_t.tv_usec - start_t.tv_usec) % 1000, query_string, prepare_string ? prepare_string : ""))); + } + else + { + /* Print duration if we did not print it before. */ + if (save_log_duration) + ereport(LOG, + (errmsg("duration: %ld.%03ld ms", + (long) ((stop_t.tv_sec - start_t.tv_sec) * 1000 + + (stop_t.tv_usec - start_t.tv_usec) / 1000), + (long) (stop_t.tv_usec - start_t.tv_usec) % 1000))); + } } if (save_log_statement_stats)
---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings