This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 78b91f7dd9f Fix openGauss mpp decoding plugin decode single quote at
increment task (#25895)
78b91f7dd9f is described below
commit 78b91f7dd9f6def1500fcae9268bebcb52ee14d3
Author: Xinze Guo <[email protected]>
AuthorDate: Thu May 25 23:20:16 2023 +0800
Fix openGauss mpp decoding plugin decode single quote at increment task
(#25895)
* Fix openGauss mpp decoding plugin decode single quote
* Fix sonar issue
* Use ThreadLocalRandom replace SecureRandom
---
.../data/pipeline/mysql/ingest/MySQLIncrementalDumper.java | 4 ++--
.../pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java | 2 +-
.../test/e2e/data/pipeline/framework/helper/PipelineCaseHelper.java | 3 +--
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumper.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumper.java
index 793de1271ae..4e3fc6bc0b5 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumper.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumper.java
@@ -58,8 +58,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
-import java.util.Random;
import java.util.Set;
+import java.util.concurrent.ThreadLocalRandom;
/**
* MySQL incremental dumper.
@@ -89,7 +89,7 @@ public final class MySQLIncrementalDumper extends
AbstractLifecycleExecutor impl
YamlJdbcConfiguration jdbcConfig =
((StandardPipelineDataSourceConfiguration)
dumperConfig.getDataSourceConfig()).getJdbcConfig();
log.info("incremental dump, jdbcUrl={}", jdbcConfig.getUrl());
DataSourceMetaData metaData =
TypedSPILoader.getService(DatabaseType.class,
"MySQL").getDataSourceMetaData(jdbcConfig.getUrl(), null);
- ConnectInfo connectInfo = new ConnectInfo(new Random().nextInt(),
metaData.getHostname(), metaData.getPort(), jdbcConfig.getUsername(),
jdbcConfig.getPassword());
+ ConnectInfo connectInfo = new
ConnectInfo(ThreadLocalRandom.current().nextInt(), metaData.getHostname(),
metaData.getPort(), jdbcConfig.getUsername(), jdbcConfig.getPassword());
client = new MySQLClient(connectInfo, dumperConfig.isDecodeWithTX());
catalog = metaData.getCatalog();
}
diff --git
a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java
b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java
index 464852d7d2d..c4c0fb5b76f 100644
---
a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java
+++
b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java
@@ -206,7 +206,7 @@ public final class MppdbDecodingPlugin implements
DecodingPlugin {
case "character":
case "nvarchar2":
default:
- return decodeString(data);
+ return decodeString(data).replace("''", "'");
}
}
diff --git
a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/helper/PipelineCaseHelper.java
b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/helper/PipelineCaseHelper.java
index 04a3400cb46..edfa67386cf 100644
---
a/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/helper/PipelineCaseHelper.java
+++
b/test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/data/pipeline/framework/helper/PipelineCaseHelper.java
@@ -138,8 +138,7 @@ public final class PipelineCaseHelper {
public static String generateJsonString(final int length, final boolean
useUnicodeCharacter) {
String value;
if (useUnicodeCharacter) {
- // TODO openGauss incremental task parse single quote not
correctly now
- value = Strings.repeat("{中 } ABC", length);
+ value = Strings.repeat("{''中 } A'", Math.max(1, length / 10));
} else {
value = generateString(length);
}