Re: [HACKERS] logging statement levels
| От | Andrew Dunstan |
|---|---|
| Тема | Re: [HACKERS] logging statement levels |
| Дата | |
| Msg-id | 4072A9A2.5010702@dunslane.net обсуждение исходный текст |
| Ответ на | Re: [HACKERS] logging statement levels (Bruce Momjian <pgman@candle.pha.pa.us>) |
| Ответы |
Re: [HACKERS] logging statement levels
|
| Список | 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. > > >
В списке pgsql-patches по дате отправления: