LiveCompare 2.0 release notes v2

Released: 15 Feb 2022

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

FeatureNew 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 Comparison Key for more information.LIV-5
FeatureIf 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
FeatureWhen 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
FeatureWhen 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
EnhancementAdded support to Oracle 21c.LIV-47
EnhancementOn 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
EnhancementLiveCompare schema can now be added to a replication-enabled (EDB Postgres Distributed, pglogical or native logical replication) database.LIV-42
EnhancementLiveCompare can use the new pg_read_all_data role in PostgreSQL 14.LIV-73
EnhancementAbort with a proper message if any database version is not supported.
ChangePackage has been renamed to edb-livecompare from 2ndq-livecompare.
ChangeExecutable has been renamed to livecompare from 2ndq-livecompare.
Bug fixProperly quote the unicode sequence \u0000 to avoid an error when generating DML.LIV-98
Bug fixFixed an issue where the number of total rows was displayed incorrectly when the table was split into multiple round parts.LIV-14
Bug fixFixed an issue where empty BLOB on Oracle when compared against an empty bytea on Postgres was generating a false positive.LIV-103
Bug fixFixed 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 fixFixed an unhandled exception on the recheck mode if there are any divergences.LIV-107
Bug fixFixed 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 fixFixed an issue where fields of timestamp data type were always generating a mismatching hash between Oracle and Postgres.
Bug fixFixed an issue where ignored columns were still being considered in the common hash.