#! /bin/bash function do_test() { echo $1 for i in $(seq 1 14); do psql postgres -c "set max_parallel_workers_per_gather to 0; set log_min_duration_statement = 0; set client_min_messages=log; explain analyze select sum(a) from $1"; done | grep LOG } function do_test_union1() { echo "UNION_pf0" for i in $(seq 1 14); do psql postgres -c "set max_parallel_workers_per_gather to 0; set log_min_duration_statement = 0; set client_min_messages=log; SELECT sum(a) FROM (SELECT a FROM ft10 UNION ALL SELECT a FROM ft20 UNION ALL SELECT a FROM ft30 UNION ALL SELECT a FROM ft40) as pf0"; done | grep LOG } function do_test_union2() { echo "UNION_pf1" for i in $(seq 1 14); do psql postgres -c "set max_parallel_workers_per_gather to 0; set log_min_duration_statement = 0; set client_min_messages=log; SELECT sum(a) FROM (SELECT a FROM ft11 UNION ALL SELECT a FROM ft22 UNION ALL SELECT a FROM ft33 UNION ALL SELECT a FROM ft44) as pf1"; done | grep LOG } function warmup() { for i in $(seq 1 5); do psql postgres -c "set log_min_duration_statement = -1; select sum(a) from $1"; done 1>&2 > /dev/null } #for t in "t0" "pll"; #for t in "ft0" "pf0" "pf1" "ptf0" "ptf1"; #for t in "pf0" "ptf0"; for t in "t0" "pll" "ft0" "pf0" "pf1" "ptf0" "ptf1"; do warmup $t do_test $t done exit for t in "ft0" "pf0" "pf1" "ptf0" "ptf1"; do warmup $t do_test $t done #do_test_union1 #do_test_union2