From a1ce88a59c05ac63c92f36c219f714e5552e9ba3 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 15 Oct 2004 16:50:31 +0000 Subject: Have log_duration only output when log_statement has printed the query. This handles the new multiple log_statement values. Ed L. --- src/backend/tcop/postgres.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/backend/tcop/postgres.c') diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 9f4e8b06bad..b9abf0d6b69 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.435 2004/10/12 21:54:40 petere Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.436 2004/10/15 16:50:31 momjian Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -81,6 +81,9 @@ bool Log_disconnections = false; LogStmtLevel log_statement = LOGSTMT_NONE; +/* flag indicating if the statement satisfies log_statement */ +bool statement_logged; + /* GUC variable for maximum stack depth (measured in kilobytes) */ int max_stack_depth = 2048; @@ -463,9 +466,13 @@ pg_parse_query(const char *query_string) List *raw_parsetree_list; ListCell *parsetree_item; + statement_logged = false; if (log_statement == LOGSTMT_ALL) + { ereport(LOG, (errmsg("statement: %s", query_string))); + statement_logged = true; + } if (log_parser_stats) ResetUsage(); @@ -501,6 +508,7 @@ pg_parse_query(const char *query_string) { ereport(LOG, (errmsg("statement: %s", query_string))); + statement_logged = true; break; } commandTag = CreateCommandTag(parsetree); @@ -512,6 +520,7 @@ pg_parse_query(const char *query_string) { ereport(LOG, (errmsg("statement: %s", query_string))); + statement_logged = true; break; } } @@ -1003,7 +1012,8 @@ exec_simple_query(const char *query_string) } usecs = (long) (stop_t.tv_sec - start_t.tv_sec) * 1000000 + (long) (stop_t.tv_usec - start_t.tv_usec); - if (save_log_duration) + /* Only print duration if we previously printed the statement. */ + if (statement_logged && save_log_duration) ereport(LOG, (errmsg("duration: %ld.%03ld ms", (long) ((stop_t.tv_sec - start_t.tv_sec) * 1000 + -- cgit v1.2.3