RELEASE 2.0.0

The first release of version 2.0. See RELEASE-2.0 to see changes leading
from version 1.2 to 2.0.

RELEASE 2.0.1
=======

- Bug #226 :: Cleanup thread needed change to expected PQResultStatus

- Bug #69 - vactables type was being referenced before UPGRADE FUNCTIONS could actually have created it, when upgrading from an earlier version.

  This would cause UPGRADE FUNCTIONS to fail.

- Bug #64 - use of syslog levels had some inappropriate break statements so that some logging would get lost.

- If you had multiple clusters where one cluster name was a substring of the other, slon-tools.pm could find
  both when looking for slon processes relevant to the shorter cluster name.  Added a space to the relevant
  bit of slon-tools.pm

- Failover had an insert into sl_event where # of columns provided didn't match those expected.  This
  resulted from the change of snapshot handling which used to involve 3 columns where in 8.3+, there is
  now a snapshot type.

- Fix syntax error in tools/altperl/slon_watchdog.pl

- Add cleanup_interval example to sample slon.conf file

- Add cleanup_interval configuration configuration to regression tests

- Add documentation for complex failover scenario

- Revise installation notes to indicate that xxid.so no longer exists in Slony-I 2.0+

- Fix documentation typos

- Fixed error with cleanup code which was not purging old data in sl_log_1/sl_log_2

- Fix altperl/slontools errors

- Added in preliminaries for upgrade from 1.2 to 2.0 - discussion of what the tool
  needs to do

- Bug #63 - Array overrun in logtrigger()

RELEASE 2.0.2

- PostgreSQL 8.4 compatibility - src/backend/slony1_funcs.c needed to
  #include "catalog/pg_type.h"; that is no longer implicitly included by
  the SPI #include

- Fix bug #71 - config dump was failing on string entries that were NULL

- Fix bug #76 - REPAIR CONFIG could have collisions where, when we 
  load a schema, one entry in sl_table already has an OID value
  that incorrectly matches a value that another update is trying to
  fix.

  This would cause REPAIR CONFIG to fail.

  Put in a query that updates the oids in sl_table and sl_sequence to
  randomly selected values from pg_class that couldn't match (since
  the values selected are from non-table/non-sequence objects)

- Updated release notes to indicate that 2.0 only supports PostgreSQL
  8.3+

- Change to configure.ac to allow it to run on autoconf 2.63; there was
  something unsuitable about SLONREL_VERSION processing

- Fixes to Makefile for admin guide

- Various fixes to admin guide material

- Added an extra test to Schema name test that validates that things
  can operate properly even if the DB lacks a "public" schema

- Fixed bug in tools/start_slon.sh

- Fixed pathname substitutions in a couple of altperl scripts

- Add a test which validates that the cluster schema name is valid; 
  pgAdminIII allowed setting up cluster names that slonik would refuse
  to connect to.

- Revised regression tests to use SYNC/WAIT FOR EVENT instead of
  queries that try to coordinate sl_status information with rather
  less determinacy...

- Cleanup thread was generating spurious error messages due to
  misinterpreting PG return codes.  Rectified this, and added a
  test in to make sure we're exercising the logic


RELEASE 2.0.3

- PostgreSQL 8.4 has been released; slonik needs to explicitly recognize it

- Add in slonikconfdump.sh tool, which generates a slonik script to duplicate
  the configuration of a Slony-I cluster

- Significant fixes to documentation to reflect 2.0 changes

- Add "OMIT COPY" option to the Slonik "SUBSCRIBE SET" command

- Document process for Slony-I 2.0 upgrade using OMIT COPY option

- Fix to race condition where file descriptor copies were being made at
  the wrong time in the scheduler

- Modify "testseqnames" regression test to create a whole bunch of
  sequences to validate that things don't break down with either lots of
  them, or where IDs are large numbers

- Change minimum debugging level to -1 to allow suppressing logging

- Bug #92 - compression of event numbers had a bug where events >
  2^31-1 would overflow the "int" value

- Autovacuum handling changes in PostgreSQL 8.4 - we pull metadata
  from pg_class.reloptions, instead of pg_autovacuum

- logswitch fix resolving a potential data loss + statement blocking
  bug...

  Before attempting to TRUNCATE the sl_log_* tables, we need to
  successfully request an exclusive lock.  By doing so in an
  exception block with NOWAIT option, this can "lose" gracefully.

- Add LOG_NAME_SUFFIX to altperl tools

Added in rc3:

- Updates to copyright dates on files

- Bug #98 - need WAIT ON parameter in slonik code generated by
  slonik_move_set altperl script.

- Change default $LOGDIR, so that distros won't need to patch it.

- Fix LOG_NAME_SUFFIX feature. Thanks to David Fetter and Andrew Dunstan.

- Improve documentation on EVENT NODE for STORE NODE command

- SLONLOG directory changes for Red Hat-related distributions

- Bug #97 - insert into sl_setsync upon FAILOVER had values() clause based on the
  pre-2.0 schema; fix to use 2.0.

- UPGRADE FUNCTIONS failing because functions had their return types changed.
  Added in "DROP FUNCTION IF EXISTS" (fine in 8.3+) in
  src/backend/slony1_funcs.sql to rectify this.

- As observed by Bernd Helmle, cloneNodePrepare returns an event ID,
  and hence should return BIGINT

- Introduced ShouldSlonyVacuumTable() function for 8.3 so we cope with
  differences in vacuum handling between 8.3 and 8.4+

- Fix 8.4-ism relating to subscription retries
  <http://lists.slony.info/pipermail/slony1-commit/2009-October/002728.html>

Added post rc3:

- Bug #103 - When adding snapshot entries, they should be "1:1:", not "0:0:"

- autoconf/C funcs change to cope with 8.5 change that ScanKeywordLookup has
  3 arguments rather than 1 (in previous versions)

- Remove Emacs fodder from tools (bug #108)

- Quoting problems in Perl script (bug #110)

- Add notes about flex/bison conflict (bug #109)

- Memory leak changes per Ulrich Weber
  http://lists.slony.info/pipermail/slony1-hackers/2010-January/000292.html

- Logic error (if versus "else if") noticed by Richard Yen

- Bug #106 - misleading error message when setting up session configuration

- Improve test harness to report conninfo in case where connection fails

- Bug #55 - va_args cannot be used multiple times

- Bug # 113 - DROP cloneNodePrepare since the return type changes.
  Patch from Atte Peltomäki

- Improve configure complaint if it can't find PQunescapeBytea - this
  likely implies that configure couldn't find libpq.

- Copyright date changes

- Added discussion of synchronous commit to documentation

- Removed some discussion of behaviours relating to ancient versions
  of PostgreSQL that are no longer supported (David Fetter)

- SPI_getbinval() was being passed a NULL, which PostgreSQL 8.5 no
  longer accepts.  Add isnull variable in the relevant code block so
  there's a place to stow the bool result.

  Reason for this noted by Alvaro Herrera - thanks!

- Change "long long" to "int64" to make things consistent with how
  PostgreSQL expresses XIDs.

- Similarly "%lld" in printf changed to INT64_FORMAT

- Fixing up detection by Slonik of PostgreSQL 8.4 (patch per Peter
  Eisentraut) - bug #116

RELEASE 2.0.4

- script syntax error Bug # 108

- Fixed memory corruption issue introduced in 2.0.3 with replicating large rows

- cloneNodeFinish() references the proper column in sl_sequence Bug # 119

- Newer versions of flex have changed yyleng from an int to a size_t
  instead of referencing the extern yyleng directly we use the function
  yyget_leng() and have added a configure check to confirm that the version
  of flex we use is not too old.

- Memory leak fixes submittedb by Ulrich Weber

- Various documentation fixes

- cloneNodeFinish() called updateRelOid() that ws looking at wrong tab_id
  sl_sequence but the column is named seq_id. Bug # 119

- Fixed mistyped variable name in ShouldSlonyVacuumTable

RELEASE 2.0.5

-Added slonik_add_node altperl script, slonik_drop_node now takes an
 event node, changes to the message printed in slon_kill.  Patch by
 Gurjeet Singh

-Fix various log shipping issues. slony1_dump.sh restores as a replica
 session, it truncates the tables on restore.  The slony_logshipper
 program now does not exit when there are no more files ready to be
 processed

-Fixed some broken logic in failedNode()

Specific bugs addressed:

-Fix for bug #40 - check for thread safety enablement consistently in configure script

-Fix for bug #43 - get_set() not used consistently in the perl tools.
 Patch by Peter Eisentraut

-Fix for bug #78, removing vacuuming of sl_log_1/2

-Fix for bug #79, better docs on "configure" options

-Fix for bug #104 - check for NULL file descriptors

-Fix for bug #117, change logging call to omit the write to stdout if we've got and are using only syslog (use_syslog = 2)

-Fix for bug #115, Cause the parser to generate an ERROR if a WAIT FOR EVENT
 occurs inside of a TRY block.

-Fix for bug #118.  TRUNCATE ONLY in >8.4 behaves like TRUNCATE did in
 8.3

-Fix for bug #121.  SUBSCRIBE SET is now issued against the origin
 instead of the provider. This means that when subscribing a cascaded
 subscriber you must issue the WAIT FOR against the origin not the
 provider.

-Fix for bug #122, better error message in subscribeSet

-Fix for bug #124, enforce that EVENT NODE is identical to EXECUTE ONLY
 ON node if the latter is specified.

 Also restore the session_replication_role in case ddlScript_prepare
 changed it to local.

-Fix for bug 132/139, The watchdog no longer logs events from a signal handler,
 the watchdog will now re-fork the worker on a restart/retry, workers in
 a restart state will loop and try again if they can't obtain the sl_nodelock

-Fix for bug #135, slon sleeps while holding a lock

-Fix for bug 136, When reshaping cascded nodes slonik will now contact the
 subscriber directly to update listen paths

-Fix for bug #138 - autoconf fix to generate docs via groff

-Fix for bug #141, removing alterTableRestore

-Fix for bug #147, remove TABLE ADD KEY from altperl scripts

-Fix for bug #148, so pg_listener won't be vacuumed on PG 9.0 (where it does not exist)

-Fix for bug #149, localListener thread failures on startup can deadlock slon

-Fix for bug #154, Updated sl_table on slaves following an EXECUTE SCRIPT

RELEASE 2.0.6

-Fix for bug #158, Removing extranous '//' from the perl script.

-Fix for bug #155, slon can segfault while shutting down.

-Fix for bug #162, typenameTypeId() changes signatures in 9.1

-Fix for bug #160, if slon gets confused waiting for its child it will exit.

-Fix for bug #159, distclean deletes the slony_logshipper flex/bison generated files.

2.0.6 RC 3

-Fix for bug #154, previous fix did not work

2.0.7 

-Fix for bug where slon was not properly detecting connection failures when
 receiving events from the remote listener. 

- Bug #193 - vac_count not being reset to 0 (bug between 1.2 and 2.0 in 
  restructure of cleanup thread), so vacuums were being done every time

- Bug #195 - change slon_quote_* functions to IMMUTABLE

- Bug #204 - Fix issue with FAILOVER to a non-direct subscriber introduced in 2.0.5

- Support for building with Visual Studio on Win32

- Bug # 214 - tools/slonikconfdump.sh was added back in

Added post rc1

- Bug #204 - Additional fixes for bug204 relating to circular entries in
             sl_subscribe following a failover to a non-direct subscriber.

- Bug #217 - Execute script (ddlscript_complete_int) will now reconfigure the
             trigger arguments on the log trigger for any tables that needs it.

- Bug #220 - Fix issue where changing the provider of an existing subscriber
             passed parameters in the wrong order to the stored procedure.

Added post rc2

- datarootdir warning from autoconf fixed. 

- Bug #220 - Altperl script needed to reference PKEYEDTABLES

- Bug #36  - (Reapplied) don't link with pgport on non-Win32 platforms

- Misc compiler warnings including no longer calling get_share_dir from
  Postgres if PGSHARE is not defined. Configure should define it.

- Regenerated complexenv.png diagram

2.0.8

- Bug 230 - log_timestamps was always treated as true on some platforms(AIX)

- Include additional C headers required for Postgresql 9.2(master)

- Bug 233 - Fix segfault when subscribing to a set that does not exist.

- Bug 236 :: Fix default formatting of timestamp in logs

- Add express support to recognize PostgreSQL 9.1

- Bug 255 :: Fix serialization issues when using PostgreSQL 9.1

Post Release Candidate 1

- Bug 260 :: Fix issue with FAILOVER when failing over an origin with
          multiple sets.
