Tom Lane wrote:
> Mark Kirkwood <markir@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
pgman@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>