88 *
99 *
1010 * IDENTIFICATION
11- * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.435 2004/10/12 21:54:40 petere Exp $
11+ * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.436 2004/10/15 16:50:31 momjian Exp $
1212 *
1313 * NOTES
1414 * this is the "main" module of the postgres backend and
@@ -81,6 +81,9 @@ boolLog_disconnections = false;
8181
8282LogStmtLevel log_statement = LOGSTMT_NONE ;
8383
84+ /* flag indicating if the statement satisfies log_statement */
85+ bool statement_logged ;
86+
8487/* GUC variable for maximum stack depth (measured in kilobytes) */
8588int max_stack_depth = 2048 ;
8689
@@ -463,9 +466,13 @@ pg_parse_query(const char *query_string)
463466List * raw_parsetree_list ;
464467ListCell * parsetree_item ;
465468
469+ statement_logged = false;
466470if (log_statement == LOGSTMT_ALL )
471+ {
467472ereport (LOG ,
468473(errmsg ("statement: %s" ,query_string )));
474+ statement_logged = true;
475+ }
469476
470477if (log_parser_stats )
471478ResetUsage ();
@@ -501,6 +508,7 @@ pg_parse_query(const char *query_string)
501508{
502509ereport (LOG ,
503510(errmsg ("statement: %s" ,query_string )));
511+ statement_logged = true;
504512break ;
505513}
506514commandTag = CreateCommandTag (parsetree );
@@ -512,6 +520,7 @@ pg_parse_query(const char *query_string)
512520{
513521ereport (LOG ,
514522(errmsg ("statement: %s" ,query_string )));
523+ statement_logged = true;
515524break ;
516525}
517526}
@@ -1003,7 +1012,8 @@ exec_simple_query(const char *query_string)
10031012}
10041013usecs = (long ) (stop_t .tv_sec - start_t .tv_sec )* 1000000 + (long ) (stop_t .tv_usec - start_t .tv_usec );
10051014
1006- if (save_log_duration )
1015+ /* Only print duration if we previously printed the statement. */
1016+ if (statement_logged && save_log_duration )
10071017ereport (LOG ,
10081018(errmsg ("duration: %ld.%03ld ms" ,
10091019(long ) ((stop_t .tv_sec - start_t .tv_sec )* 1000 +