Tom Lane wrote:
Mark Kirkwood <ma****@paradise.net.nz> writes: So setting "log_statement=true" does all *statements* - but not all
*executions* of each statement. Is this the intention?
AFAIK this is an implementation artifact that's never really been
discussed. Another aspect of the artifact is that SQL commands
appearing in plpgsql functions will be logged only on first execution
in a session.
I think you could make a fair argument that "log_statement" ought to log
only commands received from the client application. There would be real
value in being able to trace execution of plpgsql functions, but such a
feature would have very little to do with log_statement as it now
stands. The fact that RI triggers issue SQL commands is an artifact of
their implementation (and one that I believe Stephan and Jan would like
to get rid of); they shouldn't be cluttering the log at all.
At least that's what it seems like to me after a few moments'
reflection. Other opinions out there?
I checked prepared queries and it looks like this:
LOG: statement: prepare xx as select 1;
LOG: statement: execute xx;
which seems OK by me. I have updated the docs to mention the behavior
mentioned above for PREPARE and PL/pgSQL.
--
Bruce Momjian |
http://candle.pha.pa.us pg***@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/runtime.sgml
================================================== =================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/runtime.sgml,v
retrieving revision 1.232
diff -c -c -r1.232 runtime.sgml
*** doc/src/sgml/runtime.sgml 23 Jan 2004 23:54:20 -0000 1.232
--- doc/src/sgml/runtime.sgml 25 Jan 2004 00:32:55 -0000
***************
*** 1822,1829 ****
<listitem>
<para>
Causes each SQL statement to be logged. The default is off.
! Only superusers can turn off this option if it is enabled by
! the administrator.
</para>
</listitem>
</varlistentry>
--- 1822,1832 ----
<listitem>
<para>
Causes each SQL statement to be logged. The default is off.
! <command>EXECUTE</> only displays the plan name, not the
! prepared query. Server-side languages like
! <application>PL/pgSQL</> that store functions in a cache only
! display their queries on first function call. superusers can
! turn off this option if it is enabled by the administrator.
</para>
</listitem>
</varlistentry>
---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match