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.
>
>
>
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? |
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) |