Fetching contributors…
Cannot retrieve contributors at this time
1070 lines (665 sloc) 35.5 KB
Bucardo version 5.5.0
- Framework for reporting PostgreSQL and Bucardo logs when encountering test
[David Christensen]
- Teach bucardo about `show changed` to display any config settings different
than the default.
[David Christensen]
- Add initial values for settings in bucardo_config.
[David Christensen]
- Fix bug in fork/cleanup code that may prevent a killed CTL from restarting.
[Greg Sabino Mullane]
- Fix bug in onetimecopy=2 mode
[Greg Sabino Mullane]
- Allow one-character schema names to work.
[David Christensen]
- Allow a direct DSN via the "dbdsn" attribute for the "add db" command.
[Greg Sabino Mullane] ( )
- Rewrite code to support the new version of the Perl MongoDB driver.
[Greg Sabino Mullane]
- Improve the push_rows() function, and use ANY(?) whenever possible.
[Greg Sabino Mullane]
- Write things out more often, making 'bucardo status' more useful.
[Greg Sabino Mullane]
- Log the version of all loaded modules.
[Greg Sabino Mullane]
- Add basic support for Firebird as a target database type.
[Greg Sabino Mullane]
- Allow commas in the list for conflict_strategy.
[Greg Sabino Mullane]
- Remove 'boolean' as a global dependency, only require it for MongoDB use
[Greg Sabino Mullane]
Bucardo version 5.4.1, released September 26, 2015
- Ensure all sequences used in the bucardo database are in the bucardo schema.
[Greg Sabino Mullane]
Bucardo version 5.4.0, released August 6, 2015 (git commit a0eff9f6558cc2c6b19e4e675604250ad00ce420)
- Allow dashes in valid schema and table names
[David Christensen]
- New command "bucardo delta [syncname...]" to show number of pending
delta rows on source databases.
[Greg Sabino Mullane]
- Fix incorrect usage of the 'dbconn' parameter in the bucardo.db table
[Greg Sabino Mullane, reported by Alexandre Busquets]
- Fix case where VAC sometimes skipped databases used in multiple syncs.
[Greg Sabino Mullane, reported by Andrey Solovjov]
- Adjustments for new version of ExtUtils::MakeMaker
[Mathieu Arnold]
- When doing target deletes, use the quoted version of the primary key column names.
[Greg Sabino Mullane]
- Make sure we do not signal other syncs during makedelta runs if the other
syncs are inactive or have autokick off.
[Greg Sabino Mullane]
- Allow code with 'array_agg' to work on Postgres <= 8.2,
along with many other minor changes to support older versions.
[Greg Sabino Mullane]
- Add new internal function bucardo_purge_delta_oid which helps the
VAC process work better on older versions of Postgres (<= 8.2)
[Greg Sabino Mullane]
- Add new function bucardo_purge_sync_track which removes all track
and delta entries for a given sync. Use with care.
[Greg Sabino Mullane]
- Allow 'bucardo validate' to drop the autokick triggers if they are no longer needed.
[Greg Sabino Mullane]
- Add 'PRAGMA defer_foreign_keys' for sqlite targets
[Greg Sabino Mullane]
- Do not try to apply 'READ WRITE' when doing the initial SET TRANSACTION for MySQL and MariaDB,
as that option is not supported across all versions.
[Greg Sabino Mullane]
- Remove default value from sync.isolation_level, so we can default to
the global one when needed.
[Greg Sabino Mullane]
- Improve workings of the 'pkonly' argument to "bucardo add tables"
[Greg Sabino Mullane]
- Make 'bucardo list relgroup foo' show the tables in priority order.
[Greg Sabino Mullane]
- Make 'bucardo list all' a little less verbose for some not-so-common items
[Greg Sabino Mullane]
- Fix up the "add relgroup" call to allow it to work for capitalized relations,
and remove a prepare_cached error that could occur.
[Greg Sabino Mullane]
- Allow validate_sync to check the contents of functions for upgrade,
not just their existence.
[Greg Sabino Mullane]
- Do not 'RESET search_path' inside some of the internal functions.
[Greg Sabino Mullane]
- Sleep longer between stop and start when doing 'bucardo restart'
[Greg Sabino Mullane]
Bucardo version 5.3.1, released January 27, 2015 (git commit a4e59ea351410acd4fe750384a19393c261f7e91)
- When clearing out the async mode, do not do so unless the state() is sane.
This will solve some of the "pg_cancel failed" errors seen
[Greg Sabino Mullane]
- Throw a cleaner and earlier exception when connect_database fails
[Greg Sabino Mullane]
- Give a warning when a bucardo rc file has an unparseable line
[Greg Sabino Mullane]
Bucardo version 5.3.0, released December 22, 2014 (git commit 07d884fea5ba113b5d314c318bcff2cced55b6bb)
- Fix race condition when makedelta used which could cause some
rows to be incorrectly entered into the track table
[Greg Sabino Mullane]
- Fix bug when makedelta used on tables with binary primary key columns
[Greg Sabino Mullane]
- Allow 'makedelta' to be specified at the database level
[Greg Sabino Mullane]
- Give customcodes access to the list of changed rows via
the 'rows' key in the passed-in hashref
[Greg Sabino Mullane]
- Allow specification of non-default port when sending email.
Attempt support for SASL auth.
[Greg Sabino Mullane, per suggestion from Michael Wagner]
- Better support for continuing once a database has crashed
[Greg Sabino Mullane]
- Allow removing all tables or sequences at once via command line,
e.g. 'bucardo remove all tables'
[Greg Sabino Mullane]
- Allow --makedelta=foo to work on command line when adding all tables
[Greg Sabino Mullane]
- New test file t/50-star.t and much improvement to testing framework
[Greg Sabino Mullane]
- Added new logging level, DEBUG2, for things that are just too verbose
even for DEBUG!
[Greg Sabino Mullane]
- When the VAC exits, disconnect from any databases cleanly we
may still be connected to.
[Greg Sabino Mullane]
- Allow --dryrun to work when adding items, esp. tables
[Greg Sabino Mullane]
- Allow msg as alias for message e.g. 'bucardo msg foobar'
[Greg Sabino Mullane]
- When showing microseconds in the log, force the third and final zero to appear
[Greg Sabino Mullane]
Bucardo version 5.2.0, released November 5, 2014 (git commit 003b827a73a6e2e51cc5e833a5b4bc21631bd216)
- quickstart: new parameter to give on startup (e.g. "bucardo start --quickstart").
When set, skips checking the tables and columns on remote databases.
[Greg Sabino Mullane]
- Fix problem of not clearing out stagetable before using it. There was a
chance that a previous KID left some rows in there, in which case duplicate
entries will appear in bucardo_track.
[Greg Sabino Mullane]
- Make sure makedelta only adds matching track table rows if the current database is
a source, not a target, for the current sync.
[Greg Sabino Mullane]
- Fix some errant global variables which were causing subtle bugs in the makedelta
[Greg Sabino Mullane]
Bucardo version 5.1.2, released October 15, 2014 (git commit 6b8f02feaef5b116dfba9b57f6a0617d73ba3657)
- Fix problem with async failures
[Greg Sabino Mullane]
- Fix add_customcols params parsing
[David Christensen]
- Improve MCP loop handling on errors
[Greg Sabino Mullane]
- Make sure makedelta can be set for all databases, not just source ones
[Greg Sabino Mullane]
- Fix minor bug in send_mail subroutine
[Greg Sabino Mullane]
- Remove Encode::Locale dependency
[Joshua Tolley]
- Allow 'git list config*' to work as an alias for git config.
Make plain 'git config' act as 'git show all'
[Greg Sabino Mullane]
Bucardo version 5.1.1, released July 23, 2014 (git commit c91753ef834cdcac311d66851947d1e4cb8acc7c)
- Minor fixes to conflict handling.
[Greg Sabino Mullane]
- Fix upgrade to add updating of defaults.
[Greg Sabino Mullane]
Bucardo version 5.1.0, released July 14, 2014 (git commit 7465d87ec60d29555fc2a38e70e08cc09e33a7db)
- Many fixes and features added to the conflict resolution system.
[Greg Sabino Mullane]
- Fix the upgrade so new constraints are handled better.
[Greg Sabino Mullane]
Bucardo version 5.0.0, released June 23, 2014 (git commit 2349582733df31a4115b952bfcc2f5732d5af16a)
- Complete rework of Bucardo: we now allow as many source and target
databases as wanted in a single sync.
[Greg Sabino Mullane]
- Allow alternate targets: Drizzle, MariaDB, MongoDB, MySQL, Oracle, Redis,
SQLite, as well as "flat files"
[Greg Sabino Mullane]
- Rename "bucardo_ctl" to simply "bucardo"
[Jon Jensen]
- 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
[Greg Sabino Mullane]
- Use asynchronous queries when possible
[Greg Sabino Mullane]
- Redo the makedelta system, and add makedelta option for relations, which
inherit from db. Add makedelta as on/off for db.
[Greg Sabino Mullane]
- Overhaul of sequence handling: now allows for all attributes to be
replicated, such as INCREMENT_BY and MAXVALUE
[Greg Sabino Mullane]
- Fix for failing swap syncs when column is not all lowercase.
[Greg Sabino Mullane]
- Fix for proper sourcelimit and targetlimit calculations.
[Greg Sabino Mullane]
- Add script
[Josh Tolley]
- Add example scripts in 'bucardo_examples' directory
[Selena Deckelmann]
- Allow 'list sync' to filter by 'active' and 'inactive'
[Greg Sabino Mullane]
- Remove unused config variable 'upsert_attempts'
[Greg Sabino Mullane]
- Show detailed information on KID error exit.
[Greg Sabino Mullane]
- Fix bug in bucardo_purge_q_table in index detection logic.
- Show the reason why a sync failed on a failed bucardo kick.
[Greg Sabino Mullane]
- Add new subprocess (VAC) to run bucardo_purge_delta
[Greg Sabino Mullane]
- Fix errors with bytea and swap syncs
[Greg Sabino Mullane]
- Do not replicate null values to MongoDB
[Ali Asad Lotia]
- Add 'default_conflict_strategy' option
[Greg Sabino Mullane, idea from Franz Dürr]
- Force time zone to UTC to resolve timestamptz issues with bucardo_delta
[Michelle Sullivan, Greg Sabino Mullane]
- Add a log_level parameter, and classify all messages inside
with a log_level of TERSE, NORMAL, VERBOSE, or DEBUG.
[Rosser Schwarz, Greg Sabino Mullane]
- Relax SELECT version() regex in bucardo, to let modified versions
of Postgres tell us their version.
[Greg Sabino Mullane]
- Fix incorrect automatic population of database when using
'bucardo add database' and only one database exists.
[Greg Sabino Mullane]
- Fix failing makedelta when using multi-column primary keys.
[Greg Sabino Mullane, reported by Michelle Sullivan]
- Add new vacuum_after_copy variable for goats and syncs.
[Greg Sabino Mullane]
- Do not perform a checktime kick if onetimecopy mode is on.
[Greg Sabino Mullane]
- New syncs of type fullcopy now default to false for ping, stayalive,
and kidsalive.
[Greg Sabino Mullane, 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')
[Greg Sabino Mullane]
- Set the search_path to prevent bogus warnings on startup about sequence
mismatches based on schema names.
[Greg Sabino Mullane] (Bug #17)
- Add a --force option so we can remove databases via 'bucardo remove db'
along with all related goats and syncs.
[Greg Sabino Mullane]
- Change bucardo.dbrun table column pgpid to INTEGER
[Wim Lewis]
- Remove race condition from bucardo_purge_q_table()
[Greg Sabino Mullane]
- Add new options for 'bucardo add db': addalltables and addallsequences
[Greg Sabino Mullane]
- Allows syncs to be paused and resumed while they are running.
[Greg Sabino Mullane]
- Allow 'bucardo status' to run even if piddir is not available.
[Greg Sabino Mullane]
- Don't bother comparing the 'log_cnt' field of sequences.
[Rosser Schwarz]
- Allow "schema.table" format for 'bucardo list tables'
[Greg Sabino Mullane]
- Add new option "log_microsecond" to show sub-second output in logs.
[Greg Sabino Mullane]
- Make sure we update bucardo_config.bucardo_current_version when
doing a 'bucardo upgrade'
[Greg Sabino Mullane] (Bug #5)
- Automatically create the bucardo (superuser) if we can connect as 'postgres'.
[Greg Sabino Mullane]
- Add 'bucardo list all' feature.
[Christian Recktenwald]
- Allow removal of tables from relgroups via bucardo.
[Greg Sabino Mullane]
- Add create_child_q_table() function.
[Greg Sabino Mullane]
- Allow 'bucardo update relgroup foo remove <table(s)>'
and 'bucardo update relgroup foo add <table(s)>'
[Greg Sabino Mullane]
- 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.
[Greg Sabino Mullane]
- Log the current configuration settings on startup.
[Greg Sabino Mullane]
- Fix incorrect assignment of ppid in the bucardo.q table.
[Greg Sabino Mullane]
- Remove unused 'kick_sleep' config variable.
[Greg Sabino Mullane]
- Show the database name when listing relgroups via bucardo.
[Greg Sabino Mullane]
- Show the database name when listing sequences via bucardo.
[Douglas Tan]
- Show each target's Postgres version, time, and timezone on first connect.
[Greg Sabino Mullane]
- Change main trigger names to 'bucardo_delta' and 'bucardo_kick'
[Greg Sabino Mullane]
- Allow databases to have the same dsn, as we are moving
towards in-database replication.
[Greg Sabino Mullane]
- 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
[Greg Sabino Mullane]
- Fix "arguments of row IN must all be row expressions" error.
[Greg Sabino Mullane]
- Fix empty primary key join/split bug.
[Greg Sabino Mullane]
- Add Linux int script and RPM spec file
[Devrim GÜNDÜZ, 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.
[David Wheeler, Greg Sabino Mullane]
- Change the default serialization failure sleep time from 10s to 0.5s.
- Added new 'bucardo reopen' command to reopen all open file handles
Useful for log rotation.
[Greg Sabino Mullane].
- 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.
[Greg Sabino Mullane]
[ GSM is Greg Sabino Mullane ]
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 <>
- Report correct number of inserts/deletions in
bucardo_ctl status [GSM]. Reported by Gabriel
Weinberg <>
Bucardo version 4.4.3, released April 15, 2011
- Fix rare race condition when target 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 <> 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 '' [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 [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/ 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 [GSM]
- Add new 'onetimecopy' attribute to sync table, to allow recreation on
demand of pushdelta tables on targets 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
- 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]
- 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 [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 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 <>]
- Fix race condition in bucardo_delta/bucardo_track updates
for pushdelta syncs. [GSM]
- Fix a sorting problem in the bucardo-report script. [Jon Jensen <>]
- 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 <>]
- 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 <>]
- Ensure sourcedbh used by customcode has inactivedestroy set. [GSM]
- Find system grep rather than hard-coding the path [Jeff Boes <>]
- 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