Make sure that debug_query_string contains the original query text,

if available (which it usually should be), during processing of Bind
and Execute protocol messages.  This improves usefulness of
log_min_error_statement logging for extended query protocol.
This commit is contained in:
Tom Lane 2006-10-19 19:52:22 +00:00
parent def651f48f
commit 681892208f
1 changed files with 24 additions and 24 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.515 2006/10/08 17:45:50 momjian Exp $
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.516 2006/10/19 19:52:22 tgl Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@ -1326,9 +1326,9 @@ exec_bind_message(StringInfo input_message)
/*
* Report query to various monitoring facilities.
*/
debug_query_string = "bind message";
debug_query_string = pstmt->query_string ? pstmt->query_string : "<BIND>";
pgstat_report_activity(pstmt->query_string ? pstmt->query_string : "<BIND>");
pgstat_report_activity(debug_query_string);
set_ps_display("BIND", false);
@ -1680,29 +1680,9 @@ exec_execute_message(const char *portal_name, long max_rows)
return;
}
/*
* Report query to various monitoring facilities.
*/
debug_query_string = "execute message";
pgstat_report_activity(portal->sourceText ? portal->sourceText : "<EXECUTE>");
set_ps_display(portal->commandTag, false);
if (save_log_statement_stats)
ResetUsage();
/* Does the portal contain a transaction command? */
is_xact_command = IsTransactionStmtList(portal->parseTrees);
/*
* If we re-issue an Execute protocol request against an existing portal,
* then we are only fetching more rows rather than completely re-executing
* the query from the start. atStart is never reset for a v3 portal, so we
* are safe to use this check.
*/
execute_is_fetch = !portal->atStart;
/*
* We must copy the sourceText and prepStmtName into MessageContext in
* case the portal is destroyed during finish_xact_command. Can avoid the
@ -1710,7 +1690,7 @@ exec_execute_message(const char *portal_name, long max_rows)
*/
if (is_xact_command)
{
sourceText = pstrdup(portal->sourceText);
sourceText = portal->sourceText ? pstrdup(portal->sourceText) : NULL;
if (portal->prepStmtName)
prepStmtName = pstrdup(portal->prepStmtName);
else
@ -1732,6 +1712,18 @@ exec_execute_message(const char *portal_name, long max_rows)
portalParams = portal->portalParams;
}
/*
* Report query to various monitoring facilities.
*/
debug_query_string = sourceText ? sourceText : "<EXECUTE>";
pgstat_report_activity(debug_query_string);
set_ps_display(portal->commandTag, false);
if (save_log_statement_stats)
ResetUsage();
BeginCommand(portal->commandTag, dest);
/*
@ -1746,6 +1738,14 @@ exec_execute_message(const char *portal_name, long max_rows)
*/
start_xact_command();
/*
* If we re-issue an Execute protocol request against an existing portal,
* then we are only fetching more rows rather than completely re-executing
* the query from the start. atStart is never reset for a v3 portal, so we
* are safe to use this check.
*/
execute_is_fetch = !portal->atStart;
/* Log immediately if dictated by log_statement */
if (check_log_statement_cooked(portal->parseTrees))
{