Tom,
I'm currently resyncing my parser with the changes you made to
prepared statement logging. Everything is OK apart from an
inconsistency between log_duration and log_min_duration_statement.
* With log_duration, we have:
protocol : LOG: statement: execute my_query: SELECT * FROM shop WHERE $1 = $2
query : LOG: statement: EXECUTE test1('lop1', 'lop2')
* With log_min_duration_statement, we have:
protocol: LOG: duration: 235.345 ms execute insert_query: INSERT
INTO shop (name) VALUES($1)
query: LOG: duration: 0.187 ms statement: EXECUTE test1('lop1', 'lop2')
As you can see, in the log_duration case, we always have the
"statement: " part but we don't have it in log_min_duration_statement
case when using protocol.
I attached a patch to improve the consistency. It adds statement: for
every case. Note that statement was not there in the first version of
Bruce and he added it after so I keep it in this patch. I don't really
care if we have statement: or not but I'd really like a consistent
behaviour between both configuration.
Thanks,
--
Guillaume
Index: src/backend/tcop/postgres.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/tcop/postgres.c,v
retrieving revision 1.508
diff -c -r1.508 postgres.c
*** src/backend/tcop/postgres.c 8 Sep 2006 15:55:53 -0000 1.508
--- src/backend/tcop/postgres.c 13 Sep 2006 12:44:16 -0000
***************
*** 1256,1262 ****
break;
case 2:
ereport(LOG,
! (errmsg("duration: %s ms parse %s: %s",
msec_str,
*stmt_name ? stmt_name : "<unnamed>",
query_string)));
--- 1256,1262 ----
break;
case 2:
ereport(LOG,
! (errmsg("duration: %s ms statement: parse %s: %s",
msec_str,
*stmt_name ? stmt_name : "<unnamed>",
query_string)));
***************
*** 1610,1616 ****
break;
case 2:
ereport(LOG,
! (errmsg("duration: %s ms bind %s to %s: %s",
msec_str,
*portal_name ? portal_name : "<unnamed>",
*stmt_name ? stmt_name : "<unnamed>",
--- 1610,1616 ----
break;
case 2:
ereport(LOG,
! (errmsg("duration: %s ms statement: bind %s to %s: %s",
msec_str,
*portal_name ? portal_name : "<unnamed>",
*stmt_name ? stmt_name : "<unnamed>",
***************
*** 1819,1825 ****
break;
case 2:
ereport(LOG,
! (errmsg("duration: %s ms %s %s%s%s%s%s",
msec_str,
execute_is_fetch ?
_("execute fetch from") :
--- 1819,1825 ----
break;
case 2:
ereport(LOG,
! (errmsg("duration: %s ms statement: %s %s%s%s%s%s",
msec_str,
execute_is_fetch ?
_("execute fetch from") :
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq