• B
    > >>1. change the type of "log_statement" option from boolean to string, · 6a25c6e1
    Bruce Momjian 提交于
    > >>with allowed values of "all, mod, ddl, none" with default "none".
    
    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.
    6a25c6e1
postgresql.conf.sample 8.4 KB