import psycopg2
import threading

DSN = "dbname=postgres"

def run2(i):
  conn = psycopg2.connect(DSN)
  cursor = conn.cursor()
  cursor.execute("""set parallel_setup_cost=0""")
  cursor.execute("""set parallel_tuple_cost=0""")
  cursor.execute("""set min_parallel_table_scan_size=0""")
  cursor.execute("""set max_parallel_workers_per_gather=4""")
  cursor.execute("""set default_transaction_isolation=serializable""")
  if i % 2 == 0:
    cursor.execute("""set default_transaction_read_only=on""")
    cursor.execute("""select count(*) from foo""")
    cursor.execute("""select count(*) from foo""")
    conn.commit()

for i in range(16):
  conn = psycopg2.connect(DSN)
  cursor = conn.cursor()
  cursor.execute("""drop table if exists foo""")
  cursor.execute("""create table foo as select generate_series(1, 10)::int as a""")
  cursor.execute("""alter table foo set (parallel_workers = 4)""")
  conn.commit()
  conn.close()
  threading.Thread(target=run2, args=[i]).start()
