LiveCompare 2.0 release notes
=============================

Released: 15 Feb 2022

LiveCompare 2.0 includes the following new features, enhancements, bug
fixes, and other changes:

.. csv-table::
  :header: Type,Description,ID
  :widths: 12,25,15
  :align: left
  :class: longtable

  Feature,New section in setting called `Comparison Key` allows users to define a custom comparison key (list of columns) per table. This can be useful for tables without primary keys or unique indexes. See  :ref:`Comparison key<Comparison key>`  for more information.,LIV-5
  Feature,"If the table has no user-defined comparison key or primary key, LiveCompare now tries to use the unique indexes from the table. As tables can have multiple unique indexes, LiveCompare prefers to use the index where columns are not nullable. If not possible, then LiveCompare tries to use the first unique index that has less columns. If there is no unique indexes, then LiveCompare tries to use all columns from the table as a comparison key. Please note that LiveCompare does not try to ignore nullable columns from unique indexes.",LIV-39
  Feature,"When using all columns from the table as a comparison key, LiveCompare now ignores the nullable columns to avoid false positives when considering all columns. This behavior can be disabled by setting `ignore_nullable = false`.",LIV-96
  Feature,"When using an user-defined comparison key or all columns from the table as a comparison key, LiveCompare now checks if they would enforce uniqueness. If when using the column set there is any duplicate values, then LiveCompare aborts the comparison on the table. This behavior can be disabled by setting `check_uniqueness_enforcement = false`.",LIV-119
  Enhancement,Added support to Oracle 21c.,LIV-47
  Enhancement,"On Oracle 12c and newer, LiveCompare is already able to use a common hash to allow `comparison_algorithm = block_hash` and `comparison_algorithm = row_hash`, which are faster and allow table splitting among multiple worker processes. This is done on Oracle side using the `standard_hash()` function, which was introduced on Oracle 12c. Now LiveCompare also allows `comparison_algorithm = block_hash` and `comparison_algorithm = row_hash` on Oracle 11g, by using the equivalent function `sys.dbms_crypto.hash()`, provided that the user has `EXECUTE` privileges on the `sys.dbms_crypto` Oracle system package.",LIV-79
  Enhancement,"LiveCompare schema can now be added to a replication-enabled (EDB Postgres Distributed, pglogical or native logical replication) database.",LIV-42
  Enhancement,LiveCompare can use the new `pg_read_all_data` role in PostgreSQL 14.,LIV-73
  Enhancement,Abort with a proper message if any database version is not supported.,""
  Change,Package has been renamed to `edb-livecompare` from `2ndq-livecompare`.,""
  Change,Executable has been renamed to `livecompare` from `2ndq-livecompare`.,""
  Bug fix,Properly quote the unicode sequence `\u0000` to avoid an error when generating DML.,LIV-98
  Bug fix,Fixed an issue where the number of total rows was displayed incorrectly when the table was split into multiple round parts.,LIV-14
  Bug fix,Fixed an issue where empty `BLOB` on Oracle when compared against an empty `bytea` on Postgres was generating a false positive.,LIV-103
  Bug fix,Fixed an issue where connectivity issues were causing exceptions aborting the whole comparison session. Now LiveCompare is able to reconnect and continue the comparison if possible.,LIV-84
  Bug fix,Fixed an unhandled exception on the recheck mode if there are any divergences.,LIV-107
  Bug fix,Fixed an issue where the table comparison was not being aborted if the table didn't exist on a connection and `logical_replication_mode` was disabled.,LIV-108
  Bug fix,Fixed an issue where fields of `timestamp` data type were always generating a mismatching hash between Oracle and Postgres.,""
  Bug fix,Fixed an issue where ignored columns were still being considered in the common hash.,""
