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

Reply via email to