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