Hello, On Thu, 4 Apr 2019 23:37:04 +0200 Peter Eisentraut <peter.eisentraut@xxxxxxxxxxxxxxx> wrote: > On 2019-04-01 23:43, Alvaro Herrera wrote: > > Maybe the replica identity of a table got set to a unique index on oid? > > Or something else involving system columns? (If replication is > > otherwise working, the I suppose there's a separate publication that's > > having the error; the first thing to isolate would be to see what tables > > are involved in that publication). > > Looking through the code, the bms_add_member() call in > logicalrep_read_attrs() does not use the usual > FirstLowInvalidHeapAttributeNumber offset, so that seems like a possible > problem. > > However, I can't quite reproduce this. There are various other checks > that prevent this scenario, but it's plausible that with a bit of > whacking around you could hit this error message. Here is a script to reproduce it under version 10, 11 and 12: ################################################ # env PUB=/tmp/pub SUB=/tmp/sub unset PGPORT PGHOST PGDATABASE PGDATA export PGUSER=postgres # cleanup kill %1 pg_ctl -w -s -D "$PUB" -m immediate stop; echo $? pg_ctl -w -s -D "$SUB" -m immediate stop; echo $? rm -r "$PUB" "$SUB" # cluster initdb -U postgres -N "$PUB" &>/dev/null; echo $? initdb -U postgres -N "$SUB" &>/dev/null; echo $? echo "wal_level=logical" >> "$PUB"/postgresql.conf echo "port=5433" >> "$SUB"/postgresql.conf pg_ctl -w -s -D $PUB -l "$PUB"-"$(date +%FT%T)".log start; echo $? pg_ctl -w -s -D $SUB -l "$SUB"-"$(date +%FT%T)".log start; echo $? pgbench -p 5432 -qi pg_dump -p 5432 -s | psql -qXp 5433 # fake activity pgbench -p 5432 -T 300 -c 2 & # replication setup psql -p 5432 -Xc "CREATE PUBLICATION prov FOR ALL TABLES" psql -p 5433 -Xc "CREATE SUBSCRIPTION sub CONNECTION 'port=5432' PUBLICATION prov" # wait for the streaming unset V; while [ "$V" != "streaming" ]; do sleep 1 V=$(psql -AtXc "SELECT 'streaming' FROM pg_stat_replication WHERE state='streaming'") done # trigger the error message psql -p 5433 -Xc "ALTER SUBSCRIPTION sub DISABLE" psql -p 5433 -Xc "ALTER TABLE pgbench_history ADD id SERIAL PRIMARY KEY" psql -p 5432 -Xc "ALTER TABLE pgbench_history ADD id SERIAL PRIMARY KEY" psql -p 5433 -Xc "ALTER SUBSCRIPTION sub ENABLE" ################################################ Regards,