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 e19fc663866 InventoryDumperContextSplitter supports multi-columns
unique key first integer column splitting (#36935)
e19fc663866 is described below
commit e19fc6638662a4af8d69504cb5e5c90fdb0d6214
Author: Hongsheng Zhong <[email protected]>
AuthorDate: Fri Oct 24 17:02:30 2025 +0800
InventoryDumperContextSplitter supports multi-columns unique key first
integer column splitting (#36935)
* InventoryDumperContextSplitter supports multi-columns unique key first
integer column splitting
* Update RELEASE-NOTES.md
---
RELEASE-NOTES.md | 1 +
.../inventory/splitter/InventoryDumperContextSplitter.java | 14 +++++++-------
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index c709e1bc3ab..86d2200e069 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -48,6 +48,7 @@
1. Encrypt: Add quotes to encrypt rewrite derived columns -
[#34950](https://github.com/apache/shardingsphere/pull/34950)
1. Encrypt: Support NOT LIKE operator in encryption feature -
[#35984](https://github.com/apache/shardingsphere/pull/35984)
1. Readwrite-splitting: Update transactional read query strategy default type
as PRIMARY - [#36477](https://github.com/apache/shardingsphere/pull/36477)
+1. Pipeline: InventoryDumperContextSplitter supports multi-columns unique key
first integer column splitting -
[#36935](https://github.com/apache/shardingsphere/pull/36935)
### Bug Fixes
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/inventory/splitter/InventoryDumperContextSplitter.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/inventory/splitter/InventoryDumperContextSplitter.java
index b16a9705cb8..54e1cbeb3eb 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/inventory/splitter/InventoryDumperContextSplitter.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/preparer/inventory/splitter/InventoryDumperContextSplitter.java
@@ -118,15 +118,15 @@ public final class InventoryDumperContextSplitter {
if (!dumperContext.hasUniqueKey()) {
return Collections.singleton(new UnsupportedKeyIngestPosition());
}
+ DialectDataTypeOption dataTypeOption = new
DatabaseTypeRegistry(sourceDataSource.getDatabaseType()).getDialectDatabaseMetaData().getDataTypeOption();
List<PipelineColumnMetaData> uniqueKeyColumns =
dumperContext.getUniqueKeyColumns();
+ int firstColumnDataType = uniqueKeyColumns.get(0).getDataType();
+ if (dataTypeOption.isIntegerDataType(firstColumnDataType)) {
+ Range<Long> uniqueKeyValuesRange =
getUniqueKeyValuesRange(jobItemContext, dumperContext);
+ int shardingSize =
jobItemContext.getJobProcessContext().getProcessConfiguration().getRead().getShardingSize();
+ return
InventoryPositionCalculator.getPositionByIntegerUniqueKeyRange(tableRecordsCount,
uniqueKeyValuesRange, shardingSize);
+ }
if (1 == uniqueKeyColumns.size()) {
- DialectDataTypeOption dataTypeOption = new
DatabaseTypeRegistry(sourceDataSource.getDatabaseType()).getDialectDatabaseMetaData().getDataTypeOption();
- int firstColumnDataType = uniqueKeyColumns.get(0).getDataType();
- if (dataTypeOption.isIntegerDataType(firstColumnDataType)) {
- Range<Long> uniqueKeyValuesRange =
getUniqueKeyValuesRange(jobItemContext, dumperContext);
- int shardingSize =
jobItemContext.getJobProcessContext().getProcessConfiguration().getRead().getShardingSize();
- return
InventoryPositionCalculator.getPositionByIntegerUniqueKeyRange(tableRecordsCount,
uniqueKeyValuesRange, shardingSize);
- }
if (dataTypeOption.isStringDataType(firstColumnDataType)) {
return Collections.singleton(new
StringPrimaryKeyIngestPosition(null, null));
}