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 1bfc5d6ccc2 Fix number type implicit conversion (#28124)
1bfc5d6ccc2 is described below
commit 1bfc5d6ccc288de7237d0def421d20faf9f9bc96
Author: Xinze Guo <[email protected]>
AuthorDate: Wed Aug 16 20:30:15 2023 +0800
Fix number type implicit conversion (#28124)
---
.../core/dumper/ColumnValueReaderEngine.java | 30 ++++++++++++++++++----
.../AbstractInventoryIncrementalJobAPIImpl.java | 2 +-
.../RecordSingleTableInventoryCalculatorTest.java | 4 +--
.../core/dump/ColumnValueReaderEngineTest.java | 5 ++--
4 files changed, 30 insertions(+), 11 deletions(-)
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/ColumnValueReaderEngine.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/ColumnValueReaderEngine.java
index efd2fc274be..0756e622e25 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/ColumnValueReaderEngine.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/dumper/ColumnValueReaderEngine.java
@@ -18,8 +18,8 @@
package org.apache.shardingsphere.data.pipeline.core.dumper;
import
org.apache.shardingsphere.data.pipeline.spi.ingest.dumper.DialectColumnValueReader;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
@@ -63,13 +63,29 @@ public final class ColumnValueReaderEngine {
case Types.BOOLEAN:
return resultSet.getBoolean(columnIndex);
case Types.TINYINT:
- return metaData.isSigned(columnIndex) ?
resultSet.getByte(columnIndex) : resultSet.getShort(columnIndex);
+ if (isSigned(metaData, columnIndex)) {
+ return resultSet.getByte(columnIndex);
+ } else {
+ return resultSet.getShort(columnIndex);
+ }
case Types.SMALLINT:
- return metaData.isSigned(columnIndex) ?
resultSet.getShort(columnIndex) : resultSet.getInt(columnIndex);
+ if (isSigned(metaData, columnIndex)) {
+ return resultSet.getShort(columnIndex);
+ } else {
+ return resultSet.getInt(columnIndex);
+ }
case Types.INTEGER:
- return metaData.isSigned(columnIndex) ?
resultSet.getInt(columnIndex) : resultSet.getLong(columnIndex);
+ if (isSigned(metaData, columnIndex)) {
+ return resultSet.getInt(columnIndex);
+ } else {
+ return resultSet.getLong(columnIndex);
+ }
case Types.BIGINT:
- return metaData.isSigned(columnIndex) ?
resultSet.getLong(columnIndex) : resultSet.getBigDecimal(columnIndex);
+ if (isSigned(metaData, columnIndex)) {
+ return resultSet.getLong(columnIndex);
+ } else {
+ return resultSet.getBigDecimal(columnIndex);
+ }
case Types.NUMERIC:
case Types.DECIMAL:
return resultSet.getBigDecimal(columnIndex);
@@ -107,4 +123,8 @@ public final class ColumnValueReaderEngine {
return resultSet.getObject(columnIndex);
}
}
+
+ private static boolean isSigned(final ResultSetMetaData metaData, final
int columnIndex) throws SQLException {
+ return metaData.isSigned(columnIndex);
+ }
}
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/job/service/impl/AbstractInventoryIncrementalJobAPIImpl.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/job/service/impl/AbstractInventoryIncrementalJobAPIImpl.java
index 8402612510c..560456be746 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/job/service/impl/AbstractInventoryIncrementalJobAPIImpl.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/job/service/impl/AbstractInventoryIncrementalJobAPIImpl.java
@@ -118,7 +118,7 @@ public abstract class
AbstractInventoryIncrementalJobAPIImpl extends AbstractPip
continue;
}
int inventoryFinishedPercentage = 0;
- if (JobStatus.EXECUTE_INCREMENTAL_TASK ==
jobItemProgress.getStatus()) {
+ if (JobStatus.EXECUTE_INCREMENTAL_TASK ==
jobItemProgress.getStatus() || JobStatus.FINISHED ==
jobItemProgress.getStatus()) {
inventoryFinishedPercentage = 100;
} else if (0 != jobItemProgress.getProcessedRecordsCount() && 0 !=
jobItemProgress.getInventoryRecordsCount()) {
inventoryFinishedPercentage = (int) Math.min(100,
jobItemProgress.getProcessedRecordsCount() * 100 /
jobItemProgress.getInventoryRecordsCount());
diff --git
a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/consistencycheck/table/calculator/RecordSingleTableInventoryCalculatorTest.java
b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/consistencycheck/table/calculator/RecordSingleTableInventoryCalculatorTest.java
index 6b4c14e1f71..9425f95ccba 100644
---
a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/consistencycheck/table/calculator/RecordSingleTableInventoryCalculatorTest.java
+++
b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/consistencycheck/table/calculator/RecordSingleTableInventoryCalculatorTest.java
@@ -92,7 +92,7 @@ class RecordSingleTableInventoryCalculatorTest {
assertTrue(calculateResult.isPresent());
SingleTableInventoryCalculatedResult actual = calculateResult.get();
assertTrue(actual.getMaxUniqueKeyValue().isPresent());
- assertThat(actual.getMaxUniqueKeyValue().get(), is(5L));
+ assertThat(actual.getMaxUniqueKeyValue().get(), is(5));
}
@Test
@@ -103,7 +103,7 @@ class RecordSingleTableInventoryCalculatorTest {
assertTrue(calculateResult.isPresent());
SingleTableInventoryCalculatedResult actual = calculateResult.get();
assertTrue(actual.getMaxUniqueKeyValue().isPresent());
- assertThat(actual.getMaxUniqueKeyValue().get(), is(10L));
+ assertThat(actual.getMaxUniqueKeyValue().get(), is(10));
}
private SingleTableInventoryCalculateParameter generateParameter(final
PipelineDataSourceWrapper dataSource, final Object dataCheckPosition) {
diff --git
a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/dump/ColumnValueReaderEngineTest.java
b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/dump/ColumnValueReaderEngineTest.java
index 913933ecdc0..a6459fcc7c5 100644
---
a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/dump/ColumnValueReaderEngineTest.java
+++
b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/dump/ColumnValueReaderEngineTest.java
@@ -27,7 +27,6 @@ import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Objects;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
@@ -45,8 +44,8 @@ class ColumnValueReaderEngineTest {
connection.createStatement().executeUpdate("INSERT INTO
t_order(order_id, user_id, status, c_year) VALUES (1, 2,'ok', null)");
ResultSet resultSet =
connection.createStatement().executeQuery("SELECT * FROM t_order");
resultSet.next();
- assertThat(((Long)
Objects.requireNonNull(columnValueReaderEngine.read(resultSet,
resultSet.getMetaData(), 1))).intValue(), is(1));
- assertThat(((Long)
Objects.requireNonNull(columnValueReaderEngine.read(resultSet,
resultSet.getMetaData(), 2))).intValue(), is(2));
+ assertThat(columnValueReaderEngine.read(resultSet,
resultSet.getMetaData(), 1), is(1));
+ assertThat(columnValueReaderEngine.read(resultSet,
resultSet.getMetaData(), 2), is(2));
assertThat(columnValueReaderEngine.read(resultSet,
resultSet.getMetaData(), 3), is("ok"));
assertNull(columnValueReaderEngine.read(resultSet,
resultSet.getMetaData(), 4));
}