Re: logical changeset generation v4 - Heikki's thoughts about the patch state
Andres Freund <andres@2ndquadrant.com>
From: Andres Freund <andres@2ndquadrant.com>
To: Heikki Linnakangas <hlinnakangas@vmware.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Stephen Frost <sfrost@snowman.net>, Tom Lane <tgl@sss.pgh.pa.us>, Pavan Deolasee <pavan.deolasee@gmail.com>, Phil Sorber <phil@omniti.com>, Josh Berkus <josh@agliodbs.com>, Dimitri Fontaine <dimitri@2ndquadrant.fr>, Jeff Janes <jeff.janes@gmail.com>, Simon Riggs <simon@2ndquadrant.com>, Magnus Hagander <magnus@hagander.net>, Abhijit Menon-Sen <ams@2ndquadrant.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, Bruce Momjian <bruce@momjian.us>, Michael Paquier <michael.paquier@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2013-01-25T01:35:08Z
Lists: pgsql-hackers
On 2013-01-24 20:53:18 +0200, Heikki Linnakangas wrote: > That said (hah, you knew there would be a "but" ;-)), now that I see what > that looks like, I'm feeling that maybe it wasn't such a good idea after > all. It sounded like a fairly small patch that greatly reduces the overhead > in the master with existing replication systems like slony, but it turned > out to be a huge patch with a lot of new concepts and interfaces. Heh, I know the feeling that there must be a simpler way. But after trying several approaches (more than I dare to admit) I don't really think there's any that provides the asked for flexibility. I really think the flexibility is whats required to satisfy the very diverse aims people have for a feature like this. And if you look at the overall diffstat, without minor changes, example code and documentation: src/backend/access/heap/heapam.c | 286 ++- src/backend/replication/logical/decode.c | 514 ++++++ src/backend/replication/logical/logical.c | 943 ++++++++++ src/backend/replication/logical/logicalfuncs.c | 115 ++ src/backend/replication/logical/reorderbuffer.c | 1947 ++++++++++++++++++++ src/backend/replication/logical/snapbuild.c | 1596 ++++++++++++++++ src/backend/replication/walsender.c | 620 ++++++- src/bin/pg_basebackup/pg_receivellog.c | 869 +++++++++ src/include/replication/decode.h | 20 + src/include/replication/logical.h | 205 +++ src/include/replication/logicalfuncs.h | 14 + src/include/replication/output_plugin.h | 73 + src/include/replication/reorderbuffer.h | 296 +++ src/include/replication/snapbuild.h | 176 ++ src/include/replication/walsender_private.h | 6 +- src/backend/storage/ipc/procarray.c | 63 +- src/backend/utils/time/tqual.c | 272 ++- Its not *that* big compared to other patches that have been committed. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services