Release Notes


(October 29, 2018)

This release presents important enhancements and bug fixes, such as:

  • Add pglogical.wait_for_subscription_sync_complete and pglogical.wait_for_table_sync_complete functions
  • Allow passing of arguments to pg_basebackup via pglogical_create_subscriber
  • Update pglReorderBufferCleanSerializedTXNs to match core code
  • Improve confusing ‘natts mismatch’ error
  • Improve performance when several table resyncs are done
  • Ensure notifications sent by ENABLE REPLICA triggers are sent promptly
  • Add pglogical.xact_commit_timestamp_origin to look up the replication origin associated with a transaction id
  • Rewrite worker signalling to address possible loss of messages when multiple signals are delivered, causing issues with sync and apply
  • Stop using pglogical.alter_node_drop_interface to drop an interface that is used by a current subscription
  • Race condition between pglogical managers trying to register new workers after a crash
  • Fix a case where apply crashes are not recovered by the manager
  • Fix a memory leak in apply worker trace logic leading to unbounded memory growth in ErrorContext
  • Fix uninitialized field causing occasional log messages about “none worker”
  • Fix use of the same restore-point name by pglogical_create_subscriber that could cause the wrong restore-point to be stopped at and an incomplete initial sync


(March 20, 2018)

This release presents important enhancements and bug fixes including:

  • Fixed a race condition that could cause table synchronization to fail.
  • pglogical.alter_subscription_synchronize() now removes synchronization info about orphaned tables.
  • Recreate replication slot on retry after table synchronization failure, which should improve table synchronization recovery after intermittent errors.
  • Report process identification based on log_line_prefix settings, making it easier to obtain pglogical messages from the server logs.
  • pglogical_create_subscriber no longer generates errors when run multiple times on the same provider.
  • Handle epoll_ctl failures cleanly to avoid internal error messages.
  • Improved memory management.


(January 11, 2018)

This is a minor release that addresses bugs including:

  • Fixed version detection for PostgreSQL 10.x releases
  • Fixed misreporting of conflicts on partial unique indexes
  • Fixed conflicts resulting from table synchronization. These could happen when synchronization worker has finished faster than main apply worker catches up with it.
  • Workaround for failure to clean spilled transactions in PostgreSQL
  • Log more context when reporting ERRORs
  • Log conflicting rows as part of conflict logging


(October 9, 2017)

2.1 is a minor update that includes PG 10 support as well as fixes important bugs including:

  • Fixed dropping of extensions when pglogical is in shared_preload_libraries but not used in the current database
  • Improved compatibility with pglogical 1.x provider
  • Fixed computation of CURRENT_TIMESTAMP on subscriber
  • Improved error reporting
  • Improved replication origins handling


(June 7, 2017)

2.0.1 is a minor update that fixes important bugs including:

  • Fixed upgrades from 1.2.2
  • Fixed data synchronization for table with column names which require quoting (because they use keywords)
  • Small memory management improvements


(May 4, 2017)

The pglogical 2.0 release brings new features allowing it to be used in for even more use-cases and also several bug fixes and behavior improvements, including:

  • Row filter – specify SQL expression which should be used on upstream to filter rows for replicated table
  • Column filter – specify list of columns that should be replicated, this allows replication of just some columns from a table
  • Windows support – pglogical can be now used with PostgreSQL running on Windows as both provider and subscriber (has to be built from the source at the moment)
  • Delayed replication – it’s now possible to set delay for how long behind the downstream should be when replicating data
  • Postgres-XL support – Postgres-XL can become a pglogical subscriber, which means you can replicate from PostgreSQL to Postgres-XL directly
  • New command line tool pglogical_create_subscriber which can convert physical standby (or base backup) into pglogical subscriber
  • Performance improvements for applying transactions containing many INSERTs (including transactions that did large import using COPY)
  • Improved behavior of TRUNCATE, especially the TRUNCATE triggers
  • Users executing DDL in database no longer need USAGE privilege on pglogical schema
  • Fixed reporting of false positives on UPDATE conflicts
  • Log level for conflicts can now be changed
  • JSON protocol now works correctly with toasted columns
  • Table truncation by pglogical.alter_subscription_resynchronize_table made optional
  • Truncate triggers are now only added to tables that are part of replication set
  • The pglogical and pglogical_output libraries were merged together
  • Add use_spi configuration parameter which changes pglogical replication to use SQL queries instead of low level API to apply changes
  • Improved internal depencency tracking
  • Don’t require CASCADE because of internal triggers when dropping pglogical extension
  • Default to system or environment temporary path for storing temporary files instead of hard coded ‘/tmp’
  • Don’t report crash on some forms of normal shutdown
  • Fix VPATH builds
  • Fix initial data copy when the order of columns is different or when there are more columns on the subscriber


(January 4, 2017)

This is a maintenance release that fixes important bugs, most notably:

  • Fixed the “ERROR: tuple natts mismatch, n vs m” when DROP COLUMN was mixed with DML changes within same transaction
  • Fixed ERROR during timestamp based conflict resolution on already frozen tuples
  • Fixed internal index corruption which manifested as apparently missing tables in publication


(October 14, 2016)

This maintenance release follows closely at the heals of 1.2 with some critical bug fixes and improvements, including:

  • Fixed initial schema synchronization on 9.4
  • No longer require cascading to know about all nodes (cascading setups are now straightforward)
  • Improve error message on ‘snapshot too large’
  • Debian packages for different postgres versions don’t conflict anymore


(October 4, 2016)

There have been several enhancements and bug fixes in this major release. In addition to a change in the way the output plugin and apply plugin are handled, some of the important feature updates and changes in this release include:

  • keepalive tuned to much smaller values by default so that pglogical will notice network issues earlier
  • Better compatibility when upgrading from PostgreSQL 9.4 – it’s now safe to use the internal schema synchronization for that
  • Improved conflict handling
  • Improved support for replica triggers
  • Several issues with initial synchronizations fixed
  • Easier monitoring of the initial synchronization in pg_stat_replication

There are also several documentation improvements.


(June 10, 2016)

This is a hotfix release which fixes a severe issue with replication of TOASTed values. We strongly recommend an upgrade. The changes in this release include:

  • Fix UPDATE replication of rows containing TOASTed values. The TOASTed values were changed to NULL if they haven’t been changed by the UPDATE command.
  • Fix compatibility with Postgres 9.4
  • Always use PGXS for compiling from sources
  • Release LWLocks acquired by pglogical_drop_node
  • Subcribe default replication sets when no set was specified when doing the physical node initialization (pglogical_create_subscriber command line utility)
  • Fix potential crash in trigger discovery on subscriber


(May 2, 2016)

The 1.1 release brings new features along with bug fixes to pglogical. Same salient features are listed below:

  • Sequence replication support
  • Support for replica triggers
  • Foreign keys are no longer checked on the replica
  • Multiple subscriptions between single pair of nodes
  • The create_subscription function does not synchronize structure change by default
  • User can specify affected replication sets in replicate_ddl_command function
  • New functions for manipulating connection strings of nodes
  • PGLogical processes are clearly marked in the pg_stat_activity
  • Better behavior on worker crashes
  • Logging improvements
  • Ubuntu Xenial package


This hotfix closely follows on the heels of the first release of pglogical, fixing some critical bugs found during our internal testing and as feedback from users in the field. The list below captures some of the important bug fixes included in version 1.0.1:

  1. Fixed crash on multi-column primary keys
  2. Moved the DDL commands enqueued by pglogical.replicate_ddl_command to new predefined replication set called ddl_sql
  3. More predictable application_name for easier monitoring and setup of synchronous replication using the standard synchronous_standby_names configuration parameter
  4. Various fixes in documentation
  5. Fixed compatibility with some other extensions (e.g. pg_sslstatus)
  6. Fixed crash in origin tracking in cascaded setups
  7. Improved compile-time compatibility with 9.5 PGDG Debian packages
  8. Fixed relcache invalidation on the subscriber
  9. Fixed hanging synchonizer backround worker after individual table was added to replication and synchronization has finished
  10. Made the tests work correctly for cross-version installations