some log statements ignored

Started by brianover 19 years ago6 messagesgeneral
Jump to latest
#1brian
brian@zijn-digital.com

I changed my postgresql.conf to have:

log_statement = mod

It appears to be working, though not logging *all* INSERTs. For
instance, I have a PHP class that inserts into two tables in a
transaction. The log shows the first, but not the second. Has anyone
seen this behaviour?

test=# show log_statement;
log_statement
---------------
mod
(1 row)

brian

#2Bruce Momjian
bruce@momjian.us
In reply to: brian (#1)
Re: some log statements ignored

brian wrote:

I changed my postgresql.conf to have:

log_statement = mod

It appears to be working, though not logging *all* INSERTs. For
instance, I have a PHP class that inserts into two tables in a
transaction. The log shows the first, but not the second. Has anyone
seen this behaviour?

test=# show log_statement;
log_statement
---------------
mod
(1 row)

I have no idea why that would happen. If you do 'all' do you see all of
them?

--
Bruce Momjian bruce@momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#3brian
brian@zijn-digital.com
In reply to: Bruce Momjian (#2)
Re: some log statements ignored

Bruce Momjian wrote:

brian wrote:

I changed my postgresql.conf to have:

log_statement = mod

It appears to be working, though not logging *all* INSERTs. For
instance, I have a PHP class that inserts into two tables in a
transaction. The log shows the first, but not the second. Has anyone
seen this behaviour?

test=# show log_statement;
log_statement
---------------
mod
(1 row)

I have no idea why that would happen. If you do 'all' do you see all of
them?

Sorry--i hadn't had time to run a test. Setting it to 'all' works fine,
and i think i see the problem: the second INSERT is in a prepared
statement, so it's not being logged.

PREPARE mdb2_statement_pgsql00fb05c2c509aa2608b68bf2b87693a2 AS INSERT
INTO ...

(this is using the PEAR MDB2 package)

So, log_statement= 'mod' won't log a "PREPARE ... AS INSERT", i guess.

b

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: brian (#3)
Re: some log statements ignored

brian <brian@zijn-digital.com> writes:

Sorry--i hadn't had time to run a test. Setting it to 'all' works fine,
and i think i see the problem: the second INSERT is in a prepared
statement, so it's not being logged.

PREPARE mdb2_statement_pgsql00fb05c2c509aa2608b68bf2b87693a2 AS INSERT
INTO ...

I'm betting that's really a Parse protocol message, not a PREPARE
statement as such (the 8.1 logging code misguidedly tries to obscure the
difference). The logging of the subsequent Bind/Execute messages is
really weak in existing releases :-(. We've fixed it up for 8.2 though.

regards, tom lane

#5brian
brian@zijn-digital.com
In reply to: Tom Lane (#4)
Re: some log statements ignored

Tom Lane wrote:

brian <brian@zijn-digital.com> writes:

Sorry--i hadn't had time to run a test. Setting it to 'all' works fine,
and i think i see the problem: the second INSERT is in a prepared
statement, so it's not being logged.

PREPARE mdb2_statement_pgsql00fb05c2c509aa2608b68bf2b87693a2 AS INSERT
INTO ...

I'm betting that's really a Parse protocol message, not a PREPARE
statement as such (the 8.1 logging code misguidedly tries to obscure the
difference). The logging of the subsequent Bind/Execute messages is
really weak in existing releases :-(. We've fixed it up for 8.2 though.

You mean, because the PREPARE .. AS INSERT is different from the actual
EXECUTE statement that follows it? And the latter isn't flagged as a
"mod" action?

In any case, i guess it's not really a big deal. It just seemed
mysterious why the second one wasn't showing up.

b

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: brian (#5)
Re: some log statements ignored

brian <brian@zijn-digital.com> writes:

Tom Lane wrote:

I'm betting that's really a Parse protocol message, not a PREPARE
statement as such (the 8.1 logging code misguidedly tries to obscure the
difference). The logging of the subsequent Bind/Execute messages is
really weak in existing releases :-(. We've fixed it up for 8.2 though.

You mean, because the PREPARE .. AS INSERT is different from the actual
EXECUTE statement that follows it? And the latter isn't flagged as a
"mod" action?

No, if you were using actual SQL PREPARE and EXECUTE statements via
"simple query" protocol, I think they would both get logged (at least
the current 8.1.5 code looks like it will, not so sure about 8.1.0-4).
The problem is that "extended query" protocol is a different code path
that doesn't have the same logging support.

regards, tom lane