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:
parent
def651f48f
commit
681892208f
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* this is the "main" module of the postgres backend and
|
* 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.
|
* 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);
|
set_ps_display("BIND", false);
|
||||||
|
|
||||||
@ -1680,29 +1680,9 @@ exec_execute_message(const char *portal_name, long max_rows)
|
|||||||
return;
|
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? */
|
/* Does the portal contain a transaction command? */
|
||||||
is_xact_command = IsTransactionStmtList(portal->parseTrees);
|
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
|
* We must copy the sourceText and prepStmtName into MessageContext in
|
||||||
* case the portal is destroyed during finish_xact_command. Can avoid the
|
* 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)
|
if (is_xact_command)
|
||||||
{
|
{
|
||||||
sourceText = pstrdup(portal->sourceText);
|
sourceText = portal->sourceText ? pstrdup(portal->sourceText) : NULL;
|
||||||
if (portal->prepStmtName)
|
if (portal->prepStmtName)
|
||||||
prepStmtName = pstrdup(portal->prepStmtName);
|
prepStmtName = pstrdup(portal->prepStmtName);
|
||||||
else
|
else
|
||||||
@ -1732,6 +1712,18 @@ exec_execute_message(const char *portal_name, long max_rows)
|
|||||||
portalParams = portal->portalParams;
|
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);
|
BeginCommand(portal->commandTag, dest);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1746,6 +1738,14 @@ exec_execute_message(const char *portal_name, long max_rows)
|
|||||||
*/
|
*/
|
||||||
start_xact_command();
|
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 */
|
/* Log immediately if dictated by log_statement */
|
||||||
if (check_log_statement_cooked(portal->parseTrees))
|
if (check_log_statement_cooked(portal->parseTrees))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user