1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-29 16:21:20 +03:00

Document that errors are not output by log_statement (was they were in

8.0), and add as suggestion to use log_min_error_statement for this
purpose.  I also fixed the code so the first EXECUTE has it's prepare,
rather than the last which is what was in the current code.  Also remove
"protocol" prefix for SQL EXECUTE output because it is not accurate.

Backpatch to 8.1.X.
This commit is contained in:
Bruce Momjian 2006-04-18 00:52:41 +00:00
parent dd8d1b1fbd
commit 65f1a7a8dc
2 changed files with 12 additions and 9 deletions

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.36.2.3 2006/03/28 22:01:24 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.36.2.4 2006/04/18 00:52:41 momjian Exp $
-->
<chapter Id="runtime-config">
<title>Server Configuration</title>
@ -2729,9 +2729,10 @@ SELECT * FROM parent WHERE key = 2400;
<note>
<para>
The <command>EXECUTE</command> statement is not considered a
<literal>ddl</> or <literal>mod</> statement. When it is logged,
only the name of the prepared statement is reported, not the
actual prepared statement.
<literal>ddl</> or <literal>mod</> statement. Statements that
generate errors are not logged. Set
<varname>log_min_error_statement</> to <literal>error</> to
log such statements.
</para>
<para>

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.468.2.3 2005/12/14 17:06:37 tgl Exp $
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.468.2.4 2006/04/18 00:52:41 momjian Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@ -578,19 +578,21 @@ log_after_parse(List *raw_parsetree_list, const char *query_string,
/*
* For the first EXECUTE we find, record the client statement used by
* the PREPARE.
* the PREPARE. PREPARE doesn't save the parse tree so we have no
* way to conditionally output based on the type of query prepared.
*/
if (IsA(parsetree, ExecuteStmt))
{
ExecuteStmt *stmt = (ExecuteStmt *) parsetree;
PreparedStatement *entry;
if ((entry = FetchPreparedStatement(stmt->name, false)) != NULL &&
if (*prepare_string == NULL &&
(entry = FetchPreparedStatement(stmt->name, false)) != NULL &&
entry->query_string)
{
*prepare_string = palloc(strlen(entry->query_string) +
strlen(" [client PREPARE: %s]") - 1);
sprintf(*prepare_string, " [client PREPARE: %s]",
strlen(" [PREPARE: %s]") - 2 + 1);
sprintf(*prepare_string, " [PREPARE: %s]",
entry->query_string);
}
}