#!/bin/sh

PSQL=psql
DB=postgres

$PSQL $DB <<EOF
drop table foo;
drop table bar;
create table foo as select generate_series(1, 3) as id, 'xxxxx'::text as t;
alter table foo set (parallel_workers = 0);
create table bar as select generate_series(1, 10000) as id, 'xxxxx'::text as t;
alter table bar set (parallel_workers = 6);
EOF

for I in ` seq 1 10000 ` ; do
$PSQL $DB <<EOF
set enable_parallel_hash = on;
set parallel_leader_participation = off;
set min_parallel_table_scan_size = 0;
set parallel_setup_cost = 0;
set parallel_tuple_cost = 0;
set max_parallel_workers_per_gather = 2;
set enable_material = off;
set enable_mergejoin = off;
set work_mem = '4MB';
explain analyze
  select count(*) from foo
    left join (select b1.id, b1.t from bar b1 join bar b2 using (id)) ss
    on foo.id < ss.id + 1 and foo.id > ss.id - 1;
EOF
done
