[ GSM is Greg Sabino Mullane <greg@endpoint.com> <greg@turnstep.com> ]

Bucardo version 5.0.0, released ??, 2013

  - Complete rework of Bucardo: we now allow as many source and target 
    databases as wanted in a single sync. [GSM]

  - Allow alternate targets: Drizzle, MariaDB, MongoDB, MySQL, Oracle, Redis, 
    SQLite, as well as "flat files" [GSM]

  - Rename "bucardo_ctl" to simply "bucardo" [Jon Jensen, GSM]

  - Rename "goat" to "relation" or, more commonly, "table" and "sequence".
    [David Wheeler]

  - Rename "standard_conflict" option to "conflict_strategy".

  - Rename "herd" to "relgroup". [David Wheeler]

  - Change the way that swap syncs work: should be much faster [GSM]

  - Use asynchronous queries when possible [GSM]

  - Redo the makedelta system, and add makedelta option for relations, which
    inherit from db. Add makedelta as on/off for db. [GSM]

  - Overhaul of sequence handling: now allows for all attributes to be replicated, 
    such as INCREMENT_BY and MAXVALUE [GSM]

  - Fix for failing swap syncs when column is not all lowercase. [GSM]

  - Fix for proper sourcelimit and targetlimit calculations. [GSM]

  - Add slony_migrator.pl script [Josh Tolley]

  - Add example scripts in 'bucardo_examples' directory [Selena Deckelmann]

  - Allow 'list sync' to filter by 'active' and 'inactive' [GSM]

  - Remove unused config variable 'upsert_attempts' [GSM]

  - Show detailed information on KID error exit. [GSM]

  - Fix bug in bucardo_purge_q_table in index detection logic. [Aolmezov]

  - Show the reason why a sync failed on a failed bucardo kick. [GSM]

  - Add new subprocess (VAC) to run bucardo_purge_delta. [GSM]

  - Fix errors with bytea and swap syncs. [GSM]

  - Do not replicate null values to MongoDB [Ali Asad Lotia]

  - Add 'default_conflict_strategy' option, per idea from Franz Dürr. [GSM]

  - Force time zone to UTC to resolve timestamptz issues with bucardo_delta
    [GSM, Michelle Sullivan]

  - Add a log_level parameter, and classify all messages inside Bucardo.pm
    with a log_level of TERSE, NORMAL, VERBOSE, or DEBUG. [Rosser Schwarz and GSM]

  - Relax SELECT version() regex in bucardo, to let modified versions 
    of Postgres tell us their version. [GSM]

  - Fix incorrect automatic population of database when using 
    'bucardo add database' and only one database exists. [GSM]

  - Fix failing makedelta when using multi-column primary keys. 
    [GSM, reported by Michelle Sullivan]

  - Add new vacuum_after_copy variable for goats and syncs. [GSM]

  - Do not perform a checktime kick if onetimecopy mode is on. [GSM]

  - New syncs of type fullcopy now default to false for ping, stayalive, 
    and kidsalive. [GSM, idea from Andrew Spencer]

  - Refuse to start if the bucardo database version does not match that of 
    bucardo (the former is set by 'bucardo upgrade') [GSM]

  - Set the search_path to prevent bogus warnings on startup about sequence 
    mismatches based on schema names. [GSM] (Bug #17)

  - Add a --force option so we can remove databases via 'bucardo remove db'
    along with all related goats and syncs. [GSM]

  - Change bucardo.dbrun table column pgpid to INTEGER [Wim Lewis]

  - Remove race condition from bucardo_purge_q_table() [GSM]

  - Add new options for 'bucardo add db': addalltables and addallsequences [GSM]

  - Allow 'bucardo status' to run even if piddir is not available. [GSM]

  - Don't bother comparing the 'log_cnt' field of sequences. [Rosser Schwarz]

  - Allow "schema.table" format for 'bucardo list tables' [GSM]

  - Add new option "log_microsecond" to show sub-second output in logs. [GSM]

  - Make sure we update bucardo_config.bucardo_current_version when doing 
    a 'bucardo upgrade' [GSM] (Bug #5)

  - Automatically create the bucardo (superuser) if we can connect as 'postgres'. [GSM]

  - Add 'bucardo list all' feature [Christian Recktenwald]

  - Allow removal of tables from relgroups via bucardo. [GSM]

  - Add create_child_q_table() function. [GSM]

  - Allow 'bucardo update relgroup foo remove <table(s)>'
    and 'bucardo update relgroup foo add <table(s)>' [GSM]

  - Rename the default reason_file to bucardo.restart.reason.txt. The reason
    log is then named bucardo.restart.reason.log (instead of
    bucardo.restart.reason.log.log as before). [David Wheeler]

  - Better formatting of bucardo.reason.txt.log, and log startup failures. [GSM]

  - Log the current configuration settings on startup. [GSM]

  - Fix incorrect assignment of ppid in the bucardo.q table. [GSM]

  - Remove unused 'kick_sleep' config variable. [GSM]

  - Show the database name when listing relgroups via bucardo. [GSM]

  - Show the database name when listing sequences via bucardo. [Douglas Tan]

  - Show each target's Postgres version, time, and timezone on first connect. [GSM]

  - Change main trigger names to 'bucardo_delta' and 'bucardo_kick' [GSM]

  - Allow databases to have the same dsn, as we are moving towards in-database
    replication. [GSM]

  - Add complete documentation of all public commands, actions, parameters,
    and options to the bucardo Pod (and therefore the man page, as well).
    [David Wheeler]

  - Use the Pod docs to show the output of 'help command' and 'help command action'
    instead of duplicating that information in code. [David Wheeler]

  - Fixed PostgreSQL 9.2 compatibility issues. [David Wheeler]

  - Fix syntax issues to restore support for PostgreSQL 8.1 [GSM]

  - Fix "arguments of row IN must all be row expressions" error [GSM]

  - Fix empty primary key join/split bug [GSM]

  - Add Linux int script and RPM spec file [Devrim GÜNDÜZ and David Wheeler]

  - Add --exit-on-nosync option. Bucardo no longer exits from 'start' when
    there are no syncs. Use this option to restore that behavior. [David
    Wheeler]

  - Switch to pg_ctl in tests for more reliable (and faster!) Postgres
    startup and shutdown. [David Wheeler]

  - Fix incorrect shutdown when Postgres is not running. The pid file is now
    properly cleaned up on shutdown even if Postgres is down. [David Wheeler]

  - Tests now properly report the reasons for failed bucardo commands. [David
    Wheeler]

  - Revamp retry on serialization failure so that it actually works. The KID
    no longer sleeps and exits, but sleeps and retries the sync on its own,
    only sending a NOTICE to other processes that it is doing so. [GSM and
    David Wheeler]

  - Change the default serialization failure sleep time from 10s to 0.5s.

  - The 'update' command no longer exits with an error code on success.

  - Fixed issue with missing database handles when a KID shuts down. [David
    Wheeler]

  - Remove the customselect parameter. Use the customcols command, instead.
    [David Wheeler]

  - Remove the do_listen parameter, which was just another name for ping.

  - Rename the 'ping' parameter to 'autokick', to better describe what it does
    and to prevent confusion with the 'ping' command, which does something
    totally different. [David Wheeler]

  - Rename standard_conflict to conflict_strategy. [David Wheeler]

  - Move conflict_strategy from add/update table to add/update sync. [David Wheeler]

  - Fix issue that prevented the VAC process from shutting down immediately on
    'stop'. [David Wheeler]

  - Fix failure to restart after database disconnections.

  - Add 'remove sequence' [David Wheeler]

  - Rename most --debug* options to --log-*:
      + --debugdir is now --log-destination
      + --debugfile is deprecated; use '--log-destination none' to disable all logging
      + --debugsyslog is deprecated; use --log-destination syslog'
      + Allow logging to stderr or stdout via --log-destination
      + --log-destination may be specified multiple times for multiple logs
      + --debugfilesep is now --log-separate
      + --debugname is now --log-extension
      + --cleandebugs is now --log-clean
    [David Wheeler]

  - Eliminated 'Use of "goto" to jump into a construct has been deprecated'
    warnings on Perl 5.12 and higher.

  - Removed the 'trigrules' attribute for customcodes. Callers should 
    (carefully!) change session_replication_role themselves. [GSM]


Bucardo version 4.4.8, released November 30, 2011

  - Fix incorrect checking of hostname for host_safety_check [GSM]

  - Fix wrong version number in the bucardo_ctl script.


Bucardo version 4.4.7, released November 8, 2011

  - Fix bug when using multi-column primary keys where the first 
    is an int, and the second is not. Reported by Brady S Edwards [GSM]

  - Do not rely on $@ to catch important evals [GSM]


Bucardo version 4.4.6, released July 10, 2011

  - Fix bug resulting in wrong escapes in swap syncs for int4 primary keys
    Reported by Kiriakos Tsourapas. [GSM]


Bucardo version 4.4.5, released June 18, 2011

  - Set SECURITY DEFINER on triggerkick functions. [GSM]


Bucardo version 4.4.4, released May 14, 2011

  - Make sure we escape backslashes when building the 
    DELETE queries for pushdelta syncs [GSM]. Reported 
    by Gabriel Weinberg <yegg@alum.mit.edu>

  - Report correct number of inserts/deletions in 
    bucardo_ctl status [GSM]. Reported by Gabriel 
    Weinberg <yegg@alum.mit.edu>


Bucardo version 4.4.3, released April 15, 2011

  - Fix rare race condition when slave database dies. [GSM]
    Thanks to Kaveh Mousavi Zamani for the report.


Bucardo version 4.4.2, released March 17, 2011

  - Fix incorrect SET TIME ZONE inside the bucardo_delta functions. [GSM]


Bucardo version 4.4.1, released November 9, 2010

 - Set the search_path to prevent bogus warnings on startup about sequence 
   mismatches based on schema names. [GSM] (Bug #17)

 - Fix failing makedelta when using multi-column primary keys. 
   [GSM, reported by Michelle Sullivan]

 - Fix for failing swap syncs when column is not all lowercase. [GSM]

 - Fix errors with bytea and swap syncs. [GSM]

 - Use clock_timestamp if Postgres version is 8.2 or better. (Bug #25)
   Thanks to David Christensen <david@endpoint.com> for digging in 
   and solving this.

 - Fix error in bind_param for target to source. [GSM]

 - Make sure we truly reset onetimecopy for persistent controllers and children. [GSM]

 - If in onetimecopy mode, always create a q entry, regardless of synctype. [GSM]

 - Rename the ENCODE call for bytea selects. [GSM]

 - Always make the source transaction serializable. [GSM]

 - Force time zone to GMT to resolve timestamptz issues with bucardo_delta
   [GSM, Michelle Sullivan]

 - Allow '2' as a valid sqlstate after exception thrown. [GSM]

 - Fix typo with 'lowest/highest' standard conflict methods. Caught by Don Drake.

 - Remove race condition from bucardo_purge_q_table() [GSM]

 - Make search_path declaration LOCAL in bucardo_audit() [GSM]

 - Fix bug in bucardo_purge_q_table in index detection logic. [Aolmezov]

 - Don't bother comparing the 'log_cnt' field of sequences. [Rosser Schwarz]

 - Do not perform a checktime kick if onetimecopy mode is on. [GSM]

 - Add quote() methods to safe list for DBIx::Safe call [GSM]

 - Add -vv option to bucardo_ctl as a shortcut for --verbose --verbose [GSM]

 - Don't allow kicking of inactive syncs. [GSM]

 - Relax SELECT version() regex in bucardo_ctl, to let modified versions 
   of Postgres tell us their version. [GSM]

 - Change DESTDIR to INSTALL_BASE in the makefile [GSM]

 - No need to look at anything but ONLY master_q for populate_child_q function. [GSM]

 - Automatically create the bucardo (superuser) if we can connect as 'postgres'. [GSM]

 - Allow 'bucardo_ctl status' to run even if piddir is not available. [GSM]

 - Allow "schema.table" format for bucardo_ctl list tables [GSM]

 - Show the database name when listing herds via bucardo_ctl. [GSM]

 - Show the database name when listing sequences via bucardo_ctl. [Douglas Tan]

 - Make sure we update bucardo_config.bucardo_current_version when doing 
   a bucardo_ctl upgrade [GSM] (Bug #5)

 - Add additional clause to the the q_cleanup index. [GSM]

 - Remove unused config variable 'upsert_attempts' [GSM]

 - Remove unused 'kick_sleep' config variable. [GSM]

 - Show additional version information on startup for debugging [GSM]


Bucardo version 4.4.0, released October 14, 2009

  - Allow validate_goat() to work correctly against pgbouncer databases by 
    respecting the server_side_prepares parameter. [GSM]

  - Loosen restrictions on customcode - now the derived columns must match 
    the target, but the target and source tables can be completely different. [GSM]

  - Add the bucardo_audit() function that runs on all master databases, ensures 
    that everything related to the bucardo_* control tables is correct.
    [Josh Tolley and GSM]

  - Fix bucardo_ctl add sync ... tables=x - now adds the sync on first pass, 
    even if the tables have not been added. [GSM]

  - Adding customcode via bucardo_ctl can now specify sync, goat, priority, 
    and active columns. [GSM]

  - When viewing customcode via 'bucardo_ctl list code foo', the src_code column 
    is shown last. [GSM]

  - Add some small sleeps before checking for stale pid files, to allow their owners 
    a chance to clean them up first. [GSM]

  - Give a warning when kicking an inactive sync. [GSM]

  - Remove 'text' casting which prevented 'bucardo_ctl inspect' from working on 
    older versions of Postgres. [GSM]

  - Allow testing of multiple versions of Postgres at the same time by setting the 
    environment variables PGBINDIR[A-Z]. [GSM]

  - Don't look for hard-coded string to determine if cluster is up [GSM, thanks 
    to Andre Felipe Machado for suggesting]


Bucardo version 4.3.0, released October 8, 2009

  - Allow MCP and CTL to kill based on piddir, not just audit_pid. This will prevent duplicate 
    kids from existing if audit_pid is switched off. [GSM]

  - Fix error in lowest/highest conflict handling. [Mathieu Arnold]

  - Add new column to customcode: trigrules. Defaults to false: if true, 
    we turn on triggers and rules for the duration of the custom code. [GSM]

  - Add a new configuration value 'host_safety_check', to help prevent 
    Bucardo from being copied from one host to another and then run 
    without modifying at least bucardo.db.dbhost first. [GSM]

  - For custom code exception handlers, make the 'dbi_error' hash key return 
    a flattened string of the actual exception thrown. [GSM]

  - Ensure exiting processes always remove their pidfile. [GSM]

  - Have the MCP clean up old pid files from the piddir on startup. [GSM]

  - Remove the 'pidfile' configuration option: now hard-coded to 'bucardo.mcp.pid' [GSM]

  - Make the pid file names more consistent, add new ones for kid processes. [GSM]

  - Refactor the killing of pids, make safer by checking they are bucardo-like [GSM]

  - Remove the PIDCLEANUP option from Bucardo.pm [GSM]

  - Better upgrading of very old versions of Bucardo. [GSM]

  - Allow add, remove, and list customcode through bucardo_ctl [GSM]

  - Allow bucardo_ctl upgrade to remove configuration settings. [GSM]

Bucardo version 4.2.2, released October 2, 2009

  - Fix so that warning_file works properly again. [GSM]

Bucardo version 4.2.1, released October 1, 2009

  - Improve ability of 'bucardo_ctl upgrade' to work against older
    versions of Bucardo [GSM]

  - Changed the chunking threshold for pushdelta to 100,000 and 10,000 [GSM]

  - Make bucardo_ctl list table|sequence follow same wildcard rules as 
    other list nouns. [GSM]

  - Remove the old 'alter' verb from bucardo_ctl: use 'update' instead [GSM]

  - Fix a SQL error in 'bucardo_ctl status <sync> [GSM]

  - Remove the unused t/bucardo.test.data file [GSM]

Bucardo version 4.2.0, released September 30, 2009

  - Add the "delta_bypass" feature, which allows a pushdelta sync to switch 
    to 'fullcopy' mode on the fly, depending on the number of rows that 
    have changed. [GSM]

  - Fixed an error preventing customselect from working in certain situations. [GSM]

  - Have 'bucardo_ctl install' check for successful plperlu installation. [GSM]

  - Clean up and standardize all the bucardo_ctl list/add/remove actions. [GSM]

Bucardo version 4.1.2, released September 25, 2009

 - Fix sequence replication by setting is_called properly on the targets
   [GSM, thanks to Selena Deckelmann for discovering this]

 - Respect server_side_prepares db setting in validate_sync. Previously, 
   this function would fail if validating more than one table at a time 
   and the database was set as server_side_prepares off [GSM]

 - Make sure we cast rowid* to text within the bucardo_add_delta-called 
   functions, for picky versions of Postgres. [GSM]

Bucardo version 4.1.1, released September 24, 2009

 - Fix case where Bucardo was too eager to lock tables post serialization 
   failures. Since we can't really do this automatically and safely, 
   remove the code in question for now. [GSM, hat tip to Selena Deckelmann]

Bucardo version 4.1.0, released September 24, 2009

  - Fix problem with possible function name collision when the names 
    of the combined columns in the primary key is greater than NAMEDATALEN, 
    which we'll assume is 63. [GSM]

  - Add "bucardo_ctl inspect table" to show all dependencies, as well 
    as cross referencing against herds the table is in [GSM]

  - Fix an error when validate_sync tries to recreate an existing trigger; 
    occurred when a fullcopy sync was set to ping=true [GSM]

  - When using "bucardo_ctl add all tables db=<name>", make sure we only 
    look for the already added tables for that specific database.
    [Selena Deckelmann and Josh Tolley]

  - Add new boolean column to the "db" table named "server_side_prepares", which 
    is true by default. If off, Bucardo will not use server-side prepared 
    statements, and thus can be used in PgBouncer's transaction mode.
    [GSM, idea by Andrew Spencer]

  - During pushdelta, break large number of rows for a single table until multiple 
    DELETE and COPY calls, to help debugging, to allow for a progress indicator 
    both at the Bucardo and Postgres levels, and to prevent crashes seen on 
    older versions of Postgres when very large IN() lists are used. [GSM]

  - When using "bucardo_ctl add all tables", ignore any tables inside 
    schemas starting with 'bucardo' [GSM]

  - Allow --verbose flag for list syncs to show linked tables [GSM]

  - Allow --verbose flag for list tables to show linked herds and syncs [GSM]

  - Change rebuild_index to a smallint: a 1 only runs it with a fullcopy.
    If you really want to use it otherwise, set it to 2 [GSM]

  - Allow the dbhost to be turned off (local socket only) in the db table 
    when using "bucardo_ctl update db <name> host=non. [GSM]


Bucardo version 4.0.3, released September 16, 2009

  - Fix some minor problems with bucardo_ctl and "add sync" [GSM]

  - Allow ping to be specified for new tables added via "add sync" [GSM]


Bucardo version 4.0.2, released September 16, 2009

  - Add the name of the database to the install choices, as some systems 
    have mismatched names (BSD's 'pgsql' user) [Vilem Kebrt]

  - Clear out stale q entries on startup, created when a kid was hit with a 
    kill -9. This was causing Bucardo to think the q slot was still active. [GSM]

  - Fix cases where we were not quoting the UNLISTEN names [GSM]

  - Remove duplicate PID numbers from log [GSM]

  - Prohibit syncs from having names reserved for synctypes. [GSM]

  - Add new delete method of "truncate_cascade" for syncs [GSM]

  - Allow "foo*", "*foo", and "*foo*" wildcard format in bucardo_ctl 
    when specifying syncs, e.g. bucardo_ctl kick ABC* [GSM]

  - Allow special cases for bucardo_ctl kick: "all [synctype] [active]" [GSM]

  - Allow filtering of 'bucardo_ctl list syncs' by synctype [GSM]

  - Allow 'bucardo_ctl add sync tables=...' to work with schema.table format [GSM]

  - Add --verbose option to 'bucardo_ctl list syncs' to show tables [GSM]

  - Allow name changes for syncs, herds, dbs, dbgroups [GSM]

  - Automatically add missing tables when doing 
    "bucardo_ctl add sync source=dbname ... tables=x,y,z" [GSM]

  - Allow multiple items to be changed at one time with 'bucardo_ctl update item' [GSM]

  - Change validate_sync notice to LOG [GSM]


Bucardo version 4.0.1, released September 8, 2009

  - Fix to allow "add all tables db=foo" to work as expected. [GSM]

  - Set audit_pid to be off by default. [GSM]

  - Fix broken WHERE clause inside bucardo_ctl for "add table" [GSM]


Version 4.0.0, released September 7, 2009

New features:

  - Add support for multi-column primary keys. Thanks to Backcountry.com. [GSM]

  - Add new 'onetimecopy' attribute to sync table, to allow recreation on 
    demand of pushdelta tables on slaves via COPY. [GSM]

  - Support for replication after TRUNCATE. This will only work on 
    Postgres version 8.4 and higher, and only pushdelta syncs. [GSM]

  - Add log_conflict_details to allow logging of conflict information 
    to a separate file. [Adam Wendt]

  - Add 'maxkicks' and 'lifetime' to syncs to force restart of controller 
    and kids after a certain number of kicks or time. [Josh Tolley]
    Thanks to Backcountry.com.

  - Allow replication of sequences. [GSM]

  - Add the bucardo_custom_trigger table, which allows tight control of exactly 
    what items in a table will be replicated. [Ben Allen]
  - Add the bucardo_rate table to track exactly how long replication takes
    on a per-sync and per-table basis. [GSM]

  - Add more bucardo_ctl actions: install, reload, validate, restart, update [GSM]

  - Allow adding of all tables and sequences in a database at once via bucardo_ctl [GSM]

  - Add in bucardo_compress_delta function, to remove duplicate rows from 
    the bucardo_delta table. [GSM]

  - Allow the injection of custom messages into the Bucardo logs, and make 
    an interface for same in bucardo_ctl. [GSM]

  - Add the "warning_file" config parameter to log all 'Warning' messages. [GSM]

  - Add validate_all_syncs() function, and allow an argument to both that 
    and validate_sync() to force recreation of supporting objects. [GSM]

Enhancements:

  - Remove 'Moose' dependency. [GSM]

  - Remove disable_triggers and disable_rules from the sync table. 
    We simply choose pg_class or replica based on the version of the 
    database in question. [GSM]

  - Rewrite the pushdelta sync method to be more efficient and safer. [GSM]

  - Change from Mail::Sendmail to Net::SMTP [Ben Allen]

  - Allow wildcards in the 'bucardo_ctl kick' [Josh Tolley]

  - Improve the FreeBSD scripts/bucardo_ctl.rc file [Ben Allen]

  - Add "sendmail" option to the customcode input. [Ben Allen]

  - Add 'bucardo_ctl upgrade' to make intra-version upgrades easy 
    and automatic. [Selena Deckelmann and GSM]

  - Add more tests and improve existing ones. [Josh Tolley]

  - Force READ WRITE mode so Bucardo works on read only databases. [GSM]

  - Make the audit_pid table more useful. Use sequences instead of 
    PIDs to find children. Allow for the audit_pid table to be toggled off. [GSM]

  - Remove the debugstderr and debugstdout options, as they never worked 
    correctly anyway. [GSM]

  - When truncating during fullcopy, fallback to delete if it fails. [GSM]

  - On startup, all syncs that may have trigger-based notifies are 
    initially kicked. [GSM]

  - MCP listens for pings during table validations. [GSM]

  - Have master_q use a trigger, not multiple rules. Remove the need 
    for a separate create_child_q() function. [GSM]

  - Default for log_showtime is now 'scalar localtime' rather than 
    epoch seconds. [GSM]

  - No longer require a reason for the "stop" action. [GSM]

  - Add INSTALL_BUCARDODIR for quick and dirty 'make install' [GSM]

Bug fixes:

  - Fix failure to disable/enable triggers when using pg_class and table 
    and schema are words changed by quote_ident. [Ben Allen]

  - Tolerate incompatibility in DEFAULT of negative numbers between 
    Postgres 8.2 and 8.3. [Jon Jensen]

  - Do better checking of bucardo_ctl executable when MCP is restarting. [Ben Allen]

  - Change timestamp to timestamptz where needed inside Bucardo.pm [Yan Farmawan]

  - Put schema in db_getconn calls [Alex Bahlai]

  - Record the proper PID for the MCP in the pid file [Goran Gugic]

  - Set the tcp_* defaults in bucardo_config to zero (system default). [GSM]

  - Allow for dead columns when checking attnums. [GSM]

  - Do not attempt respawn of MCP if mcp_dbproblem_sleep is 0. [GSM]


Bucardo version 3.1.0, released April 6, 2008

  - Fix race condition in bucardo_delta/bucardo_track updates 
    for pushdelta syncs. [GSM]

  - Auto-detect primary keys (or unique indexes) for added tables. [GSM]

  - Add update_bucardo_schema.pl to facilitate version changes. [GSM]

  - Use correct quoted/non-quoted versions of primary keys to allow 
    primary keys with spaces, etc. [GSM]

  - Add new options to log_showtime to show non-epoch time strings [GSM]

  - Make bucardo_ctl use the global version number, not its own. [GSM]

  - Support bytea in primary key and regular columns. [GSM]


Bucardo version 3.0.9, released March 26, 2008

  - Fix problem causing killed controller to not re-do interrupted syncs 
    on restart. [GSM]


Bucardo version 3.0.8, released February 5, 2008

  - Fix error in 'latest' conflict code. [Adam Wendt].

  - Filter out inactive target dbs from bucardo-report script.
    [Spencer Christensen <schristensen@backcountry.com>]

  - Fix race condition in bucardo_delta/bucardo_track updates 
    for pushdelta syncs. [GSM]

  - Fix a sorting problem in the bucardo-report script. [Jon Jensen <jon@endpoint.com>]

  - Fix problem with after_sync code not firing at correct time for stayalive kids. [GSM]


Bucardo version 3.0.7, released October 11, 2007

 - Allow bucardo_ctl options to be specified in a .bucardorc file. [GSM]

 - Add new index to bucardo_delta for faster purging. [GSM]

 - Add a BSD-style rc file in the scripts directory. [Ben Allen <bsa@lanl.gov>]

 - Activate the "latest" standard_conflict method. [GSM]

 - Fix error for tables with primary key and no other columns in pushdelta/swap syncs, 
   per report from Ben Allen. [GSM]

 - Change pid and ppid columns in table "q" from smallint to integer. [Ben Allen <bsa@lanl.gov>]

 - Ensure sourcedbh used by customcode has inactivedestroy set. [GSM]

 - Find system grep rather than hard-coding the path [Jeff Boes <jeff@endpoint.com>]

 - Fix for tests: make third database have a default password. [GSM]

 - Add ping method to CTL and KID processes. [GSM]


Bucardo version 3.0.6 - First public release, September 1, 2007


