LIU created FLINK-36579:
---------------------------
Summary: mysql cdc charset collation sort not equals java string
compare.
Key: FLINK-36579
URL: https://issues.apache.org/jira/browse/FLINK-36579
Project: Flink
Issue Type: Improvement
Components: Flink CDC
Affects Versions: cdc-3.2.0
Environment: mysql 8.0
mysql-cdc 3.2
Reporter: LIU
Fix For: cdc-3.2.0
Use id VARCHAR(255) NOT NULL PRIMARY KEY COLLATE utf8mb3_general_ci as
ChunkSplitKey.
Once data for id is
{code:java}
aGGGGGG
GbGGGGG
GGcGGGG
GGGdGGG
GGGGeGG
GGGGGfG
GGGGGGg{code}
mysql sort order is unchanged.
but java string compare sort becomes reverse order.
{code:java}
if (ObjectUtils.compare(chunkEnd, max) >= 0) {
return null;
} else {
return chunkEnd;
}
public static int compare(Object obj1, Object obj2) {
if (obj1 instanceof Comparable && obj1.getClass().equals(obj2.getClass())) {
return ((Comparable) obj1).compareTo(obj2);
} else {
return obj1.toString().compareTo(obj2.toString());
}
}
{code}
mysql-cdc queryNextChunkMax will return null. so current snapshotSplit is
[null, null].
It will cause the read task to read all data in the table. and make current
read task hang out for a long time.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)