repro-17821-SUBSCRIPTION.sh.txt

text/plain

Filename: repro-17821-SUBSCRIPTION.sh.txt
Type: text/plain
Part: 0
Message: Re: BUG #17821: Assertion failed in heap_update() due to heap pruning
sed 's/minfree = Max(minfree, BLCKSZ \/ 10)/minfree = Max(minfree, BLCKSZ \/1)/' -i src/backend/access/heap/pruneheap.c
./configure --enable-debug --enable-cassert -q && make -j8 -s && TESTS=test_setup make -s check-tests

PGROOT=`pwd`/tmp_install/usr/local/pgsql
export PGDATA=`pwd`/tmpdb

export PATH="$PGROOT/bin:$PATH"
export LD_LIBRARY_PATH="$PGROOT/lib"

[ -f "$PGDATA/postmaster.pid" ] && pg_ctl stop -m immediate

rm *.log
rm -rf "$PGDATA"; initdb >initdb.log 2>&1

export PGPORT=15431
echo "
fsync=off
port=$PGPORT
" >> $PGDATA/postgresql.auto.conf

ulimit -c unlimited
pg_ctl -l server.log start
createdb regression
export PGDATABASE=regression
export PGHOST=127.0.0.1

res=0

echo "
CREATE ROLE su SUPERUSER;
CREATE SUBSCRIPTION sub CONNECTION 'dbname=nonexisting'
  PUBLICATION pub WITH (connect = false);
" | psql

for ((i=1;i<=20;i++)); do
  echo "iteration $i"

  for ((k=1;k<=100;k++)); do
    for ((j=1;j<=200;j++)); do echo "
ALTER SUBSCRIPTION sub SET (synchronous_commit = false);
    "; done | psql >/dev/null 2>&1 &
 
    for ((j=1;j<=200;j++)); do echo "
ALTER SUBSCRIPTION sub OWNER TO su;
ALTER SUBSCRIPTION sub SET (slot_name = NONE);
    "; done | psql >/dev/null 2>&1 &
    wait
  done

grep 'TRAP:' server.log && break;
done

pg_ctl -w -t 5 stop || pg_ctl stop -m immediate