+ add ports to all commands + make all flags consistent (add --master* or --slave* prefix) + short options for debug, verbose, quiet, help (Getopt::Long automatic) + add original HOWTO author to doc/eRserver.HOWTO + use scrict in all perl code - add regression testing using http://pgdiff.sf.net/ (I gave up on this, and decided to write my own pgdiff) - support original 0.1 rsync.so (modify trigger in MasterInit) - fix Snapshots in all commands to use new dot-leading snapshots - fix and check InitRservTest + integrate changes from current PostgreSQL which where left out - add multiple slaves support from http://archives.postgresql.org/pgsql-hackers/2003-06/msg00608.php - support schemas - rserv fails on big 10,000 row replications (reported by Thomas A. Lowery on pgreplivation list) - support create/drop tabels (using own version of perl pgdiff which outputs SQL) - check triggers (pgreplication Nov 2002 from Mabrouk CHOUK) - implement insert if column doesn't exists on update again as configuration option per-table (Nelio's code -- is it useful?) - write terminal GUI for replication +-----------------------------------------+ | master | slave | | host: socket | host: luna | | port: | port: 15432 | | user: | user: rserv | | pass: | pass: xxxxxx | |-----------------------------------------| | table | col | * | dir | table | col | * | |-----------------------------------------| | a | id | | --> | a | id | f | | b | id | t | <-> | b | id | f | | ... | ... | t | <-- | ... | ... | | |-----------------------------------------| | * just update don't insert if not exist | | help: | +-----------------------------------------+ Afer examining perl-based curses soltions (don't get me started) I opted for more line-by-line tool which will look somewhat like Linux's kernel make oldconfig. - prefix all output to terminal with "ERROR", "DEBUG" etc. - write RServ features list * master-slave replication with configurable parametars and easily tweakable perl code * transaction-aware (bug in transaction isolation levels siggested at pgreplication list for open source rserv?) * Supports snapshots (bundles changes) * Uses SPI, Perl and PG_Perl interface * SyncIDs are used to keep track of the slave data updates * Uses a replication table on master to capture updates via trigger then synchronization can be manual via command line or by number of snapshots * Only one slave and no fail over support - check race conditions: - multiple updates of same row before replication occurs (reported as erserver bug?) - change delete from _rserv_log_ where logid < somelogid to 32-bit modulo arithmetic