Re: [HACKERS] logging statement levels

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: PostgreSQL-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [HACKERS] logging statement levels
Date: 2004-04-06 12:59:14
Message-ID: 4072A9A2.5010702@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches


Unless I'm missing something, this patch has the effect that with values
of "ddl" or "mod" for log_statement, a statement with a parse error
will not be logged, which was what I hoped to avoid.

cheers

andrew

Bruce Momjian wrote:

>Andrew Dunstan wrote:
>
>
>>>>Here are some options:
>>>>
>>>>1. change the type of "log_statement" option from boolean to string,
>>>>with allowed values of "all, mod, ddl, none" with default "none".
>>>>2. same as 1. but make boolean true values synonyms for "all" and
>>>>boolean false values synonyms for "none".
>>>>3. keep "log_statement" option as now and add a new option
>>>>"log_statement_level" with the same options as 1. but default to "all",
>>>>which will have no effect unless "log_statement" is true.
>>>>
>>>>
>>>>
>>>>
>>>I like 1.
>>>
>>>
>
>OK, here is a patch that implements #1. Here is sample output:
>
> test=> set client_min_messages = 'log';
> SET
> test=> set log_statement = 'mod';
> SET
> test=> select 1;
> ?column?
> ----------
> 1
> (1 row)
>
> test=> update test set x=1;
> LOG: statement: update test set x=1;
> ERROR: relation "test" does not exist
> test=> update test set x=1;
> LOG: statement: update test set x=1;
> ERROR: relation "test" does not exist
> test=> copy test from '/tmp/x';
> LOG: statement: copy test from '/tmp/x';
> ERROR: relation "test" does not exist
> test=> copy test to '/tmp/x';
> ERROR: relation "test" does not exist
> test=> prepare xx as select 1;
> PREPARE
> test=> prepare xx as update x set y=1;
> LOG: statement: prepare xx as update x set y=1;
> ERROR: relation "x" does not exist
> test=> explain analyze select 1;;
> QUERY PLAN
> ------------------------------------------------------------------------------------
> Result (cost=0.00..0.01 rows=1 width=0) (actual time=0.006..0.007 rows=1 loops=1)
> Total runtime: 0.046 ms
> (2 rows)
>
> test=> explain analyze update test set x=1;
> LOG: statement: explain analyze update test set x=1;
> ERROR: relation "test" does not exist
> test=> explain update test set x=1;
> ERROR: relation "test" does not exist
>
>It checks PREPARE and EXECUTE ANALYZE too. The log_statement values are
>'none', 'mod', 'ddl', and 'all'. For 'all', it prints before the query
>is parsed, and for ddl/mod, it does it right after parsing using the
>node tag (or command tag for CREATE/ALTER/DROP), so any non-parse errors
>will print after the log line.
>
>
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Fabien COELHO 2004-04-06 13:14:21 Re: pg_hba.conf view from the database?
Previous Message Richard Huxton 2004-04-06 12:23:43 Re: pg_hba.conf view from the database?

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2004-04-06 13:21:59 Re: [BUGS] COPY allows parameters which corrupt output
Previous Message Fabien COELHO 2004-04-06 08:59:12 Re: hint infrastructure setup (v3)