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 6565d88 PostgreSQL 14 bit data type are abnormal during inventory
migration (#14782)
6565d88 is described below
commit 6565d8831b151717998a3663e25397e0a60788bb
Author: ReyYang <[email protected]>
AuthorDate: Sat Jan 15 16:25:01 2022 +0800
PostgreSQL 14 bit data type are abnormal during inventory migration (#14782)
---
.../ingest/PostgreSQLInventoryDumper.java | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-dialect/shardingsphere-data-pipeline-postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLInventoryDumper.java
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-dialect/shardingsphere-data-pipeline-postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLInventoryDumper.java
index 7a0fd6f..a8854ae 100644
---
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-dialect/shardingsphere-data-pipeline-postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLInventoryDumper.java
+++
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-dialect/shardingsphere-data-pipeline-postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLInventoryDumper.java
@@ -20,11 +20,13 @@ package
org.apache.shardingsphere.data.pipeline.postgresql.ingest;
import
org.apache.shardingsphere.data.pipeline.api.config.ingest.InventoryDumperConfiguration;
import
org.apache.shardingsphere.data.pipeline.core.datasource.PipelineDataSourceManager;
import
org.apache.shardingsphere.data.pipeline.core.ingest.dumper.AbstractInventoryDumper;
+import org.postgresql.util.PGobject;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Types;
/**
* PostgreSQL JDBC dumper.
@@ -33,6 +35,8 @@ public final class PostgreSQLInventoryDumper extends
AbstractInventoryDumper {
private static final String PG_MONEY_TYPE = "money";
+ private static final String PG_BIT_TYPE = "bit";
+
public PostgreSQLInventoryDumper(final InventoryDumperConfiguration
inventoryDumperConfig, final PipelineDataSourceManager dataSourceManager) {
super(inventoryDumperConfig, dataSourceManager);
}
@@ -49,10 +53,28 @@ public final class PostgreSQLInventoryDumper extends
AbstractInventoryDumper {
if (isPgMoneyType(resultSet, index)) {
return resultSet.getBigDecimal(index);
}
+ if (isPgBitType(resultSet, index)) {
+ PGobject result = new PGobject();
+ result.setType("bit");
+ Object resultSetObject = resultSet.getObject(index);
+ if (resultSetObject == null) {
+ result.setValue(null);
+ } else {
+ result.setValue((Boolean) resultSetObject ? "1" : "0");
+ }
+ return result;
+ }
return resultSet.getObject(index);
}
private boolean isPgMoneyType(final ResultSet resultSet, final int index)
throws SQLException {
return
PG_MONEY_TYPE.equalsIgnoreCase(resultSet.getMetaData().getColumnTypeName(index));
}
+
+ private boolean isPgBitType(final ResultSet resultSet, final int index)
throws SQLException {
+ if (Types.BIT == resultSet.getMetaData().getColumnType(index)) {
+ return
PG_BIT_TYPE.equalsIgnoreCase(resultSet.getMetaData().getColumnTypeName(index));
+ }
+ return false;
+ }
}