From 9fb2061a1e89560814f0355e0e4faf148d2b2036 Mon Sep 17 00:00:00 2001 From: zhouxiongjia <719216473@qq.com> Date: Mon, 6 Sep 2021 18:46:04 +0800 Subject: [PATCH] fix the failed match in some datatype --- .../com/gauss/common/db/meta/ColumnMeta.java | 4 +++ .../com/gauss/common/db/sql/SqlTemplate.java | 31 ++++++++++++++++--- .../db/DbOnceFullRecordExtractor.java | 1 - src/main/resources/gauss.properties | 1 - 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/gauss/common/db/meta/ColumnMeta.java b/src/main/java/com/gauss/common/db/meta/ColumnMeta.java index efa09ea..7615fd9 100644 --- a/src/main/java/com/gauss/common/db/meta/ColumnMeta.java +++ b/src/main/java/com/gauss/common/db/meta/ColumnMeta.java @@ -22,6 +22,10 @@ public class ColumnMeta { this.typeName = typeName; } + public String getTypeName() { + return typeName; + } + public String getName() { return name; } diff --git a/src/main/java/com/gauss/common/db/sql/SqlTemplate.java b/src/main/java/com/gauss/common/db/sql/SqlTemplate.java index b99dbe2..e934ae9 100644 --- a/src/main/java/com/gauss/common/db/sql/SqlTemplate.java +++ b/src/main/java/com/gauss/common/db/sql/SqlTemplate.java @@ -43,10 +43,10 @@ public class SqlTemplate { default: sb.append(meta.getName()); } - sb.append(" || '_' || "); + sb.append(" || "); } int length = sb.length(); - sb.delete(length - 11, length); + sb.delete(length - 4, length); sb.append("))) "); return sb.toString(); } @@ -57,13 +57,25 @@ public class SqlTemplate { List columns = context.getTableMeta().getColumns(); for (ColumnMeta meta : columns) { switch (meta.getType()) { + case Types.BOOLEAN: + case Types.BIT: + sb.append("convert(").append(meta.getName()).append(",int)"); + break; + case Types.CHAR: + sb.append("convert(").append(meta.getName()).append(",char)"); + break; case Types.REAL: case Types.FLOAT: case Types.DOUBLE: sb.append("round(convert(").append(meta.getName()).append(",char), 10)"); break; + case Types.VARBINARY: case Types.BINARY: - sb.append("lower(hex(").append(meta.getName()).append("))"); + if (meta.getTypeName().equals("GEOMETRY")) { + sb.append("substring(AsText(").append(meta.getName()).append("), 6)"); + } else { + sb.append("lower(hex(").append(meta.getName()).append("))"); + } break; default: sb.append(meta.getName()); @@ -82,7 +94,11 @@ public class SqlTemplate { for (ColumnMeta meta : columns) { switch (meta.getType()) { case Types.BOOLEAN: - sb.append("cast(").append(meta.getName()).append(" as int"); + case Types.BIT: + sb.append("cast(").append(meta.getName()).append(" as int)"); + break; + case Types.CHAR: + sb.append("cast(").append(meta.getName()).append(" as varchar)"); break; case Types.REAL: //same as double @@ -91,8 +107,13 @@ public class SqlTemplate { case Types.DOUBLE: sb.append("round(").append(meta.getName()).append("::numeric, 10)"); break; + case Types.VARBINARY: case Types.BINARY: - sb.append("substring(cast(").append(meta.getName()).append(" as varchar) from 3)"); + if (meta.getTypeName().equals("GEOMETRY")) { + sb.append("replace(cast(").append(meta.getName()).append(" as varchar),',',' ')"); + } else { + sb.append("substring(cast(").append(meta.getName()).append(" as varchar) from 3)"); + } break; default: sb.append(meta.getName()); diff --git a/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java b/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java index 203df0f..d0d44ef 100644 --- a/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java +++ b/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java @@ -57,7 +57,6 @@ public class DbOnceFullRecordExtractor extends AbstractRecordExtractor { } else { //todo } - } // 启动异步线程 diff --git a/src/main/resources/gauss.properties b/src/main/resources/gauss.properties index 2d0432b..4dd9041 100644 --- a/src/main/resources/gauss.properties +++ b/src/main/resources/gauss.properties @@ -38,7 +38,6 @@ gauss.extractor.noupdate.thresold=0 gauss.applier.concurrent.enable=true gauss.applier.concurrent.global=false gauss.applier.concurrent.size=30 -gauss.applier.dump=false # stats gauss.stat.print.interval=5 gauss.progress.print.interval=1 \ No newline at end of file -- Gitee