Package io.debezium.connector.mysql
Class MySqlHistoryRecordComparator
- java.lang.Object
-
- io.debezium.relational.history.HistoryRecordComparator
-
- io.debezium.connector.mysql.MySqlHistoryRecordComparator
-
final class MySqlHistoryRecordComparator extends HistoryRecordComparator
-
-
Field Summary
Fields Modifier and Type Field Description private Predicate<String>
gtidSourceFilter
-
Fields inherited from class io.debezium.relational.history.HistoryRecordComparator
INSTANCE
-
-
Constructor Summary
Constructors Constructor Description MySqlHistoryRecordComparator(Predicate<String> gtidSourceFilter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
isPositionAtOrBefore(Document recorded, Document desired)
Determine whether the firstoffset
is at or before the point in time of the second offset, where the offsets are given in JSON representation of the maps returned by#offset()
.-
Methods inherited from class io.debezium.relational.history.HistoryRecordComparator
isAtOrBefore, isSameSource, usingPositions
-
-
-
-
Method Detail
-
isPositionAtOrBefore
protected boolean isPositionAtOrBefore(Document recorded, Document desired)
Determine whether the firstoffset
is at or before the point in time of the second offset, where the offsets are given in JSON representation of the maps returned by#offset()
.This logic makes a significant assumption: once a MySQL server/cluster has GTIDs enabled, they will never be disabled. This is the only way to compare a position with a GTID to a position without a GTID, and we conclude that any position with a GTID is *after* the position without.
When both positions have GTIDs, then we compare the positions by using only the GTIDs. Of course, if the GTIDs are the same, then we also look at whether they have snapshots enabled.
- Overrides:
isPositionAtOrBefore
in classHistoryRecordComparator
- Parameters:
recorded
- the position obtained from recorded history; never nulldesired
- the desired position that we want to obtain, which should be after some recorded positions, at some recorded positions, and before other recorded positions; never nullgtidFilter
- the predicate function that will returntrue
if a GTID source is to be included, orfalse
if a GTID source is to be excluded; may be null if no filtering is to be done- Returns:
true
if the recorded position is at or before the desired position; orfalse
otherwise
-
-