Em qui, 1 de nov de 2018 às 05:30, Erik Rijkers <e...@xs4all.nl> escreveu: > > I ran pgbench-over-logical-replication with a WHERE-clause and could > > not get this to do a correct replication. Below is the output of the > > attached test program. > > > > > > $ ./logrep_rowfilter.sh > Erik, thanks for testing.
> So it seems this bug is due to some timing error in your patch (or > possibly in logical replication itself). > It is a bug in the new synchronization code. I'm doing some code cleanup/review and will post a new patchset after I finish it. If you want to give it a try again, apply the following patch. diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c index e0eb73c..4797e0b 100644 --- a/src/backend/replication/logical/tablesync.c +++ b/src/backend/replication/logical/tablesync.c @@ -757,7 +757,7 @@ fetch_remote_table_info(char *nspname, char *relname, /* Fetch row filtering info */ resetStringInfo(&cmd); - appendStringInfo(&cmd, "SELECT pg_get_expr(prrowfilter, prrelid) FROM pg_publication p INNER JOIN pg_publication_rel pr ON (p.oid = pr.prpubid) WHERE pr.prrelid = %u AND p.pubname IN (", MyLogicalRepWorker->relid); + appendStringInfo(&cmd, "SELECT pg_get_expr(prrowfilter, prrelid) FROM pg_publication p INNER JOIN pg_publication_rel pr ON (p.oid = pr.prpubid) WHERE pr.prrelid = %u AND p.pubname IN (", lrel->remoteid); -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento