Re: Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block - Mailing list pgsql-hackers
From | jian he |
---|---|
Subject | Re: Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block |
Date | |
Msg-id | CACJufxHJdmEu24nZ==-bko1vCcC4CvLKSC481EV+CL4s5k0sSQ@mail.gmail.com Whole thread Raw |
In response to | Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block (Quan Zongliang <quanzongliang@yeah.net>) |
Responses |
Re: Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block
|
List | pgsql-hackers |
Hi. + /* Log immediately if dictated by log_statement and XID assigned. */ + if (GetTopTransactionIdIfAny() != InvalidTransactionId && + check_log_statement(parsetree_list)) change to + /* Log immediately if dictated by log_statement and XID assigned. */ + if ( check_log_statement(parsetree_list) && + GetTopTransactionIdIfAny() != InvalidTransactionId) I think it would reduce GetTopTransactionIdIfAny() calls. I guess people will have different opinion that simple query like: `explain(analyze) select g from generate_series(1,1e6) g, pg_sleep(10);` The log output will only be generated after 10 seconds. of course, there is pg_stat_activity and other ways to view the running query. playing around with the patch. The patch is better than the current HEAD, in some cases. both under condition: alter system set log_line_prefix = '%m [%p] %q%u@%d/%a XID:%x '; set log_statement = 'all'; select pg_reload_conf(); With Patch: src3=# create table x1(a int); 2024-01-11 17:11:51.150 CST [115782] jian@src3/psql XID:814 LOG: statement: create table x1(a int); CREATE TABLE src3=# src3=# insert into x1 select 100; 2024-01-11 17:12:06.953 CST [115782] jian@src3/psql XID:815 LOG: statement: insert into x1 select 100; INSERT 0 1 src3=# begin; 2024-01-11 17:12:17.543 CST [115782] jian@src3/psql XID:0 LOG: statement: begin; BEGIN src3=*# insert into x1 select 100; 2024-01-11 17:12:24.779 CST [115782] jian@src3/psql XID:816 LOG: statement: insert into x1 select 100; INSERT 0 1 src3=*# commit; 2024-01-11 17:12:29.851 CST [115782] jian@src3/psql XID:816 LOG: statement: commit; COMMIT src3=# select 11; 2024-01-11 17:14:22.909 CST [115782] jian@src3/psql XID:0 LOG: statement: select 11; ?column? ---------- 11 (1 row) src3=# drop table x1; 2024-01-11 17:15:01.409 CST [115782] jian@src3/psql XID:817 LOG: statement: drop table x1; DROP TABLE src3=# select pg_current_xact_id(); 2024-01-11 17:21:55.602 CST [115782] jian@src3/psql XID:818 LOG: statement: select pg_current_xact_id(); pg_current_xact_id -------------------- 818 (1 row) --------------------------------------------------------------------------------- without patch: src4=# insert into x1 select 100; 2024-01-11 17:07:13.556 CST [115240] jian@src4/psql XID:0 LOG: statement: insert into x1 select 100; INSERT 0 1 src4=# begin; 2024-01-11 17:07:31.345 CST [115240] jian@src4/psql XID:0 LOG: statement: begin; BEGIN src4=*# insert into x1 select 100; 2024-01-11 17:07:35.475 CST [115240] jian@src4/psql XID:0 LOG: statement: insert into x1 select 100; INSERT 0 1 src4=*# commit; 2024-01-11 17:07:39.095 CST [115240] jian@src4/psql XID:863 LOG: statement: commit; COMMIT src4=# show logging_collector; 2024-01-11 17:09:59.307 CST [115240] jian@src4/psql XID:0 LOG: statement: show logging_collector; logging_collector ------------------- off (1 row) src4=# select 11; 2024-01-11 17:14:30.001 CST [115240] jian@src4/psql XID:0 LOG: statement: select 11; ?column? ---------- 11 (1 row) src4=# drop table x1; 2024-01-11 17:15:08.010 CST [115240] jian@src4/psql XID:0 LOG: statement: drop table x1; DROP TABLE src4=# select pg_current_xact_id(); 2024-01-11 17:21:22.085 CST [115240] jian@src4/psql XID:0 LOG: statement: select pg_current_xact_id(); pg_current_xact_id -------------------- 867 (1 row)
pgsql-hackers by date: