diff options
author | Bruce Momjian <bruce@momjian.us> | 2006-08-08 01:23:15 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2006-08-08 01:23:15 +0000 |
commit | 3716f90c39150ccc97d4ebd8615fcb6141663b8e (patch) | |
tree | 6b3d873d851a4f941b6d3db761ac7a9718f6604b /src/backend/tcop/postgres.c | |
parent | 2dd7ab062793c89419bb6a49e3f5c3f6120e830f (diff) | |
download | postgresql-3716f90c39150ccc97d4ebd8615fcb6141663b8e.tar.gz postgresql-3716f90c39150ccc97d4ebd8615fcb6141663b8e.zip |
For protocol-level prepare/bind/execute:
o print user name for all
o print portal name if defined for all
o print query for all
o reduce log_statement header to single keyword
o print bind parameters as DETAIL if text mode
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r-- | src/backend/tcop/postgres.c | 62 |
1 files changed, 45 insertions, 17 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index bc45c58612f..5a2beeaef5f 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.495 2006/08/06 02:00:52 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.496 2006/08/08 01:23:15 momjian Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -955,6 +955,7 @@ exec_simple_query(const char *query_string) portal->visible = false; PortalDefineQuery(portal, + NULL, query_string, commandTag, querytree_list, @@ -1146,7 +1147,7 @@ exec_parse_message(const char *query_string, /* string to execute */ if (log_statement == LOGSTMT_ALL) ereport(LOG, - (errmsg("statement: <protocol> PREPARE %s AS %s", + (errmsg("prepare %s: %s", *stmt_name ? stmt_name : "<unnamed>", query_string))); @@ -1367,6 +1368,7 @@ exec_bind_message(StringInfo input_message) PreparedStatement *pstmt; Portal portal; ParamListInfo params; + StringInfoData str; pgstat_report_activity("<BIND>"); @@ -1382,6 +1384,9 @@ exec_bind_message(StringInfo input_message) /* Switch back to message context */ MemoryContextSwitchTo(MessageContext); + if (log_statement == LOGSTMT_ALL) + initStringInfo(&str); + /* Get the fixed part of the message */ portal_name = pq_getmsgstring(input_message); stmt_name = pq_getmsgstring(input_message); @@ -1450,13 +1455,6 @@ exec_bind_message(StringInfo input_message) else portal = CreatePortal(portal_name, false, false); - /* We need to output the parameter values someday */ - if (log_statement == LOGSTMT_ALL) - ereport(LOG, - (errmsg("statement: <protocol> <BIND> %s [PREPARE: %s]", - *portal_name ? portal_name : "<unnamed>", - portal->sourceText ? portal->sourceText : ""))); - /* * Fetch parameters, if any, and store in the portal's memory context. */ @@ -1519,7 +1517,7 @@ exec_bind_message(StringInfo input_message) else pformat = 0; /* default = text */ - if (pformat == 0) + if (pformat == 0) /* text mode */ { Oid typinput; Oid typioparam; @@ -1540,11 +1538,16 @@ exec_bind_message(StringInfo input_message) pstring, typioparam, -1); + + if (log_statement == LOGSTMT_ALL) + appendStringInfo(&str, "%s$%d = \"%s\"", + *str.data ? ", " : "", paramno + 1, pstring); + /* Free result of encoding conversion, if any */ if (pstring && pstring != pbuf.data) pfree(pstring); } - else if (pformat == 1) + else if (pformat == 1) /* binary mode */ { Oid typreceive; Oid typioparam; @@ -1595,6 +1598,26 @@ exec_bind_message(StringInfo input_message) else params = NULL; + if (log_statement == LOGSTMT_ALL) + { + if (*str.data) + ereport(LOG, + (errmsg("bind %s%s%s: %s", + *stmt_name ? stmt_name : "<unnamed>", + *portal->name ? "/" : "", + *portal->name ? portal->name : "", + pstmt->query_string ? pstmt->query_string : ""), + errdetail(str.data))); + else + ereport(LOG, + (errmsg("bind %s%s%s: %s", + *stmt_name ? stmt_name : "<unnamed>", + *portal->name ? "/" : "", + *portal->name ? portal->name : "", + pstmt->query_string ? pstmt->query_string : ""))); + pfree(str.data); + } + /* Get the result format codes */ numRFormats = pq_getmsgint(input_message, 2); if (numRFormats > 0) @@ -1628,6 +1651,7 @@ exec_bind_message(StringInfo input_message) * Define portal and start execution. */ PortalDefineQuery(portal, + *stmt_name ? pstrdup(stmt_name) : NULL, pstmt->query_string, pstmt->commandTag, pstmt->query_list, @@ -1724,9 +1748,11 @@ exec_execute_message(const char *portal_name, long max_rows) if (log_statement == LOGSTMT_ALL) /* We have the portal, so output the source query. */ ereport(LOG, - (errmsg("statement: <protocol> %sEXECUTE %s [PREPARE: %s]", - execute_is_fetch ? "FETCH from " : "", - *portal_name ? portal_name : "<unnamed>", + (errmsg("execute %s%s%s%s: %s", + execute_is_fetch ? "fetch from " : "", + portal->prepStmtName ? portal->prepStmtName : "<unnamed>", + *portal->name ? "/" : "", + *portal->name ? portal->name : "", portal->sourceText ? portal->sourceText : ""))); BeginCommand(portal->commandTag, dest); @@ -1832,10 +1858,12 @@ exec_execute_message(const char *portal_name, long max_rows) secs, msecs))); else ereport(LOG, - (errmsg("duration: %ld.%03d ms statement: <protocol> %sEXECUTE %s [PREPARE: %s]", + (errmsg("duration: %ld.%03d ms execute %s%s%s%s: %s", secs, msecs, - execute_is_fetch ? "FETCH from " : "", - *portal_name ? portal_name : "<unnamed>", + execute_is_fetch ? "fetch from " : "", + portal->prepStmtName ? portal->prepStmtName : "<unnamed>", + *portal->name ? "/" : "", + *portal->name ? portal->name : "", portal->sourceText ? portal->sourceText : ""))); } } |