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));
         }

Reply via email to