pg_stat_statements loaded, with patch: + pgbench -s 10 -i + pgbench -S -c 10 -T 60 --progress=5 pgbench (18devel) starting vacuum...end. progress: 5.0 s, 143408.4 tps, lat 0.065 ms stddev 0.052, 0 failed progress: 10.0 s, 158556.2 tps, lat 0.060 ms stddev 0.035, 0 failed progress: 15.0 s, 157828.6 tps, lat 0.060 ms stddev 0.036, 0 failed progress: 20.0 s, 151674.9 tps, lat 0.062 ms stddev 0.045, 0 failed progress: 25.0 s, 141632.7 tps, lat 0.067 ms stddev 0.040, 0 failed progress: 30.0 s, 158796.8 tps, lat 0.060 ms stddev 0.036, 0 failed progress: 35.0 s, 151054.6 tps, lat 0.063 ms stddev 0.046, 0 failed progress: 40.0 s, 160659.6 tps, lat 0.059 ms stddev 0.035, 0 failed progress: 45.0 s, 153981.3 tps, lat 0.062 ms stddev 0.037, 0 failed progress: 50.0 s, 153105.7 tps, lat 0.062 ms stddev 0.049, 0 failed progress: 55.0 s, 159450.2 tps, lat 0.060 ms stddev 0.035, 0 failed progress: 60.0 s, 158979.5 tps, lat 0.060 ms stddev 0.035, 0 failed transaction type: scaling factor: 10 query mode: simple number of clients: 10 number of threads: 1 maximum number of tries: 1 duration: 60 s number of transactions actually processed: 9245654 number of failed transactions: 0 (0.000%) latency average = 0.062 ms latency stddev = 0.040 ms initial connection time = 50.616 ms tps = 154223.966534 (without initial connection time) pg_stat_statements loaded, without patch: + pgbench -s 10 -i + pgbench -S -c 10 -T 60 --progress=5 pgbench (18devel) starting vacuum...end. progress: 5.0 s, 144630.1 tps, lat 0.065 ms stddev 0.047, 0 failed progress: 10.0 s, 159638.0 tps, lat 0.060 ms stddev 0.034, 0 failed progress: 15.0 s, 158279.1 tps, lat 0.060 ms stddev 0.035, 0 failed progress: 20.0 s, 150433.4 tps, lat 0.063 ms stddev 0.045, 0 failed progress: 25.0 s, 159630.2 tps, lat 0.060 ms stddev 0.035, 0 failed progress: 30.0 s, 157365.3 tps, lat 0.061 ms stddev 0.036, 0 failed progress: 35.0 s, 148446.3 tps, lat 0.063 ms stddev 0.045, 0 failed progress: 40.0 s, 155013.4 tps, lat 0.061 ms stddev 0.037, 0 failed progress: 45.0 s, 154570.3 tps, lat 0.061 ms stddev 0.037, 0 failed progress: 50.0 s, 148595.7 tps, lat 0.063 ms stddev 0.049, 0 failed progress: 55.0 s, 155748.6 tps, lat 0.061 ms stddev 0.035, 0 failed progress: 60.0 s, 156308.7 tps, lat 0.061 ms stddev 0.036, 0 failed transaction type: scaling factor: 10 query mode: simple number of clients: 10 number of threads: 1 maximum number of tries: 1 duration: 60 s number of transactions actually processed: 9243315 number of failed transactions: 0 (0.000%) latency average = 0.061 ms latency stddev = 0.039 ms initial connection time = 39.253 ms tps = 154155.407337 (without initial connection time) The above numbers do not include temp tables. To test them, I hacked pgbench to use temp tables: create schema templ; alter table pgbench_accounts set schema templ ; alter table pgbench_branches set schema templ ; alter table pgbench_history set schema templ ; alter table pgbench_tellers set schema templ ; CREATE OR REPLACE FUNCTION public.login() RETURNS event_trigger LANGUAGE plpgsql AS $function$ begin create temp table pgbench_accounts as select * from templ.pgbench_accounts limit 1; create temp table pgbench_branches as select * from templ.pgbench_branches limit 1; create temp table pgbench_history as select * from templ.pgbench_history limit 1; create temp table pgbench_tellers as select * from templ.pgbench_tellers limit 1; end; $function$; create event trigger login on login execute function login(); temp tables, without patch + pgbench -S -c 10 -T 60 --progress=5 pgbench (18devel) starting vacuum...end. progress: 5.0 s, 179600.8 tps, lat 0.050 ms stddev 0.029, 0 failed progress: 10.0 s, 181251.3 tps, lat 0.051 ms stddev 0.032, 0 failed progress: 15.0 s, 184579.8 tps, lat 0.050 ms stddev 0.028, 0 failed progress: 20.0 s, 185340.0 tps, lat 0.050 ms stddev 0.027, 0 failed progress: 25.0 s, 170102.2 tps, lat 0.055 ms stddev 0.041, 0 failed progress: 30.0 s, 184247.0 tps, lat 0.051 ms stddev 0.028, 0 failed progress: 35.0 s, 187768.6 tps, lat 0.050 ms stddev 0.027, 0 failed progress: 40.0 s, 185517.6 tps, lat 0.050 ms stddev 0.034, 0 failed progress: 45.0 s, 186179.5 tps, lat 0.050 ms stddev 0.027, 0 failed progress: 50.0 s, 188005.0 tps, lat 0.049 ms stddev 0.027, 0 failed progress: 55.0 s, 184854.4 tps, lat 0.050 ms stddev 0.034, 0 failed progress: 60.0 s, 190576.0 tps, lat 0.049 ms stddev 0.027, 0 failed transaction type: scaling factor: 1 query mode: simple number of clients: 10 number of threads: 1 maximum number of tries: 1 duration: 60 s number of transactions actually processed: 11040125 number of failed transactions: 0 (0.000%) latency average = 0.050 ms latency stddev = 0.030 ms initial connection time = 139.621 ms tps = 184430.801954 (without initial connection time) Contrary to any "normal" workload, this still aggregates the 10 parallel sessions' temp table statements: query_id calls query 2249050047423342439 │ 1181385 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 6235824319853410599 │ 1166204 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 1699131257591049879 │ 1147717 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 -3332048971696272963 │ 1130036 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 -6043564579131403500 │ 1105202 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 6195010893428714792 │ 1095123 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 -6431540675815678490 │ 1077330 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 5106269170593406241 │ 1065739 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 -8943016353683653166 │ 1037755 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 -5518914812029529229 │ 1033634 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 with patch: + pgbench -S -c 10 -T 60 --progress=5 pgbench (18devel) starting vacuum...end. progress: 5.0 s, 181903.0 tps, lat 0.050 ms stddev 0.030, 0 failed progress: 10.0 s, 169692.8 tps, lat 0.054 ms stddev 0.039, 0 failed progress: 15.0 s, 189353.0 tps, lat 0.049 ms stddev 0.027, 0 failed progress: 20.0 s, 191183.2 tps, lat 0.049 ms stddev 0.027, 0 failed progress: 25.0 s, 184952.4 tps, lat 0.051 ms stddev 0.040, 0 failed progress: 30.0 s, 187466.2 tps, lat 0.050 ms stddev 0.028, 0 failed progress: 35.0 s, 190897.7 tps, lat 0.049 ms stddev 0.028, 0 failed progress: 40.0 s, 183873.0 tps, lat 0.051 ms stddev 0.044, 0 failed progress: 45.0 s, 187722.6 tps, lat 0.050 ms stddev 0.028, 0 failed progress: 50.0 s, 190621.6 tps, lat 0.049 ms stddev 0.028, 0 failed progress: 55.0 s, 184417.7 tps, lat 0.051 ms stddev 0.046, 0 failed progress: 60.0 s, 181640.5 tps, lat 0.051 ms stddev 0.030, 0 failed transaction type: scaling factor: 1 query mode: simple number of clients: 10 number of threads: 1 maximum number of tries: 1 duration: 60 s number of transactions actually processed: 11118630 number of failed transactions: 0 (0.000%) latency average = 0.050 ms latency stddev = 0.034 ms initial connection time = 123.604 ms tps = 185692.602764 (without initial connection time) Now there is only one record for all sessions: -8778269477398418330 │ 11118630 │ SELECT abalance FROM pgbench_accounts WHERE aid = $1 8104237783378095602 │ 12 │ create temp table pgbench_history as select * from templ.pgbench_history limit $1 -108440455751470927 │ 12 │ create temp table pgbench_branches as select * from templ.pgbench_branches limit $1 -4266677110910498212 │ 12 │ create temp table pgbench_accounts as select * from templ.pgbench_accounts limit $1 2367030003062126666 │ 12 │ create temp table pgbench_tellers as select * from templ.pgbench_tellers limit $1 Christoph