View Issue Details

IDProjectCategoryView StatusLast Update
0005992SymmetricDSBugpublic2023-12-12 19:33
Reporteremiller Assigned Toemiller  
Prioritynormal 
Status closedResolutionfixed 
Product Version3.14.0 
Target Version3.14.10Fixed in Version3.14.10 
Summary0005992: Conflict resolver does not handle unique index violations correctly when a unique index ignores null values
DescriptionWhen there are multiple unique indexes on a table and at least one of them ignores null values, the conflict resolver can end up deleting rows that should not be deleted. The steps to reproduce below explain how this issue can occur.

To prevent this from happening, add a startup parameter that determines whether SymmetricDS should delete rows that seem to be causing a unique index violation when the duplicate values are null. By default, SymmetricDS should not delete these rows.
Steps To Reproduce1. Create a table with two unique indexes, one of which ignores null values. One way of ignoring null values is via a filter condition on a SQL Server table.
2. Configure one-way replication for this table.
3. On the target node, insert a few rows that have null values for the column with the unique index that ignores null values.
4. On the source node, insert a row that has a null value for that same column and a value that will cause a unique index violation on a different column when synced to the target node.
5. See that all of the rows inserted during step 3 are incorrectly deleted.
TagsNo tags attached.

Relationships

related to 0006155 closedemiller Conflict resolver does not handle unique index violations correctly when a unique index ignores null values 

Activities

There are no notes attached to this issue.

Related Changesets

SymmetricDS: 3.14 f86b687a

2023-09-28 18:51:20

evan-miller-jumpmind

Details Diff
0005992: Added parameter to adjust how the conflict resolver handles null values when resolving a unique index violation Affected Issues
0005992
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/common/ParameterConstants.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/load/AbstractDataLoaderFactory.java Diff File
mod - symmetric-core/src/main/resources/symmetric-default.properties Diff File
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/DatabaseWriterSettings.java Diff File
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/DefaultDatabaseWriterConflictResolver.java Diff File

Issue History

Date Modified Username Field Change
2023-09-28 16:00 emiller New Issue
2023-09-28 16:00 emiller Status new => assigned
2023-09-28 16:00 emiller Assigned To => emiller
2023-09-28 18:52 emiller Status assigned => resolved
2023-09-28 18:52 emiller Resolution open => fixed
2023-09-28 18:52 emiller Fixed in Version => 3.14.10
2023-09-28 19:00 Changeset attached => SymmetricDS 3.14 f86b687a
2023-10-27 20:06 admin Status resolved => closed
2023-12-12 19:33 emiller Issue cloned: 0006155
2023-12-12 19:33 emiller Relationship added related to 0006155