Re: Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block

From: jian he <jian(dot)universality(at)gmail(dot)com>
To: Quan Zongliang <quanzongliang(at)yeah(dot)net>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block
Date: 2024-01-11 13:18:15
Message-ID: CACJufxHJdmEu24nZ==-bko1vCcC4CvLKSC481EV+CL4s5k0sSQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)%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(at)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(at)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(at)src3/psql XID:0 LOG:
statement: begin;
BEGIN
src3=*# insert into x1 select 100;
2024-01-11 17:12:24.779 CST [115782] jian(at)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(at)src3/psql XID:816 LOG:
statement: commit;
COMMIT
src3=# select 11;
2024-01-11 17:14:22.909 CST [115782] jian(at)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(at)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(at)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(at)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(at)src4/psql XID:0 LOG:
statement: begin;
BEGIN
src4=*# insert into x1 select 100;
2024-01-11 17:07:35.475 CST [115240] jian(at)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(at)src4/psql XID:863 LOG:
statement: commit;
COMMIT
src4=# show logging_collector;
2024-01-11 17:09:59.307 CST [115240] jian(at)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(at)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(at)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(at)src4/psql XID:0 LOG:
statement: select pg_current_xact_id();
pg_current_xact_id
--------------------
867
(1 row)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Magnus Hagander 2024-01-11 13:24:58 Re: System username in pg_stat_activity
Previous Message Alvaro Herrera 2024-01-11 12:41:49 Re: tablecmds.c/MergeAttributes() cleanup