TODO list for Bucardo
=====================

Version 5:

* Fix quoting bug reported by Sean M. Pappalardo
* Fix need for password argument when using md5
* Get pkonly working with 'bucardo add all tables'
* Get Drizzle tests verified as working
* Get bucardo-report working again
* Note 8.2 minimum requirement somewhere (probably from COPY (select))
* Make sure sequences are working

These range the gamut from wildly speculative ideas to must-have features.

- Add DB2 as a target
- Do table locking up front for fullcopy syncs, to reduce deadlock windows
- Allow creation of schema on first fullcopy as an option
- Same as above for pushdelta, but auto switch to onetimecopy after!
- Remove the gotos from the pl/perlu code.
- Use symlinks for long socket directories during testing, as DBD::Pg does.
- Fix the insert/foreign key problem for conflict resolution.
- Death-level custom code hooks
- Better conflict example in test suite, uses database handles
- Allow more data types for pkey on goats
- Handle partitioned tables
- Allow notification emails to be regex sorted, e.g. serialization warnings
- Address all XXX and TODO inside Bucardo.pm
- Add a pause mode
- Add exception code for DELETE
- I8n all messages/docs/etc.
- Allow targets to be hard-linked: nobody goes on until everyone has finished
- Support large objects
- Support system tables (Postgres 12.0?)
- Check for superuser on startup, to prevent errors that only show when a KID tries something.
- Add a flag that allows for table structure checking before each sync
- Make a Bucardo bundle for CPAN-like fun
- Readonly slaves: trigger/rule to prevent with good message
- bucardo_help() function to explain all
- Handle non-orderable data types such as polygons
- Put this list into a bug tracker
- Consider failover strategies
- Log validate_sync changes somewhere, add rollback statements
- Add support for manual DDL changes
- Add support for automatic DDL changes
- Cascading slaves: makedelta should create infrastructure as necessary
- Use polling not sleep for loop notifications
- Remove large src_code sections from the kid output when they die
- Force to C locale until we get i18n in place
- Use C triggers for the delta stuff if we can (and time them!)
- Find alternate ways for the kids to lock the tables other than $force_lock_file
- Options to allow Bucardo to continue with unaffected syncs if a target is dead

- Mongo: fix escaped data from COPY TO STDOUT
- Flatfiles: same escaped data as above for non-PG output
