From 69e91479537187ff22bb711daa4339e147af6f1a Mon Sep 17 00:00:00 2001 From: mystarry-sky Date: Mon, 8 Apr 2024 15:19:28 +0800 Subject: [PATCH] =?UTF-8?q?bugfixes=20CSV=20=E6=A8=A1=E5=BC=8F=E4=B8=8BJDB?= =?UTF-8?q?C=E5=88=86=E7=89=87=E8=BE=B9=E7=95=8C=E5=80=BCbug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/log4j2.xml | 11 ++++----- .../common/config/ConfigCache.java | 9 ++++++++ .../task/sql/QueryStatementFactory.java | 3 ++- .../extract/task/sql/SelectSqlBuilder.java | 23 +++++++++++++++++-- .../SinglePrimaryAutoSliceQueryStatement.java | 4 +++- .../sql/SinglePrimarySliceQueryStatement.java | 1 + 6 files changed, 40 insertions(+), 11 deletions(-) diff --git a/config/log4j2.xml b/config/log4j2.xml index 46a03ad..929064e 100644 --- a/config/log4j2.xml +++ b/config/log4j2.xml @@ -20,9 +20,6 @@ logs INFO ${sys:logName} - debugger - kafka - business @@ -34,16 +31,16 @@ + filePattern="${LOG_HOME}/history/${LOG_NAME}.%d{yyyyMMddHH}.zip"> - + - + - + diff --git a/datachecker-common/src/main/java/org/opengauss/datachecker/common/config/ConfigCache.java b/datachecker-common/src/main/java/org/opengauss/datachecker/common/config/ConfigCache.java index 2c6a481..88d1274 100644 --- a/datachecker-common/src/main/java/org/opengauss/datachecker/common/config/ConfigCache.java +++ b/datachecker-common/src/main/java/org/opengauss/datachecker/common/config/ConfigCache.java @@ -227,4 +227,13 @@ public class ConfigCache { public static void remove(String key) { CACHE.remove(key); } + + /** + * 检查当前校验模式是否为CSV模式 + * + * @return true | false + */ + public static boolean isCsvMode() { + return Objects.equals(CheckMode.CSV, getCheckMode()); + } } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/QueryStatementFactory.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/QueryStatementFactory.java index cc144a1..571c383 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/QueryStatementFactory.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/QueryStatementFactory.java @@ -15,6 +15,7 @@ package org.opengauss.datachecker.extract.task.sql; +import org.opengauss.datachecker.common.config.ConfigCache; import org.opengauss.datachecker.common.entry.extract.TableMetadata; import org.opengauss.datachecker.common.exception.ExtractPrimaryKeyException; import org.opengauss.datachecker.extract.task.CheckPoint; @@ -64,7 +65,7 @@ public class QueryStatementFactory { public FullQueryStatement createFullQueryStatement() { return tableMetadata -> { final SelectSqlBuilder sqlBuilder = new SelectSqlBuilder(tableMetadata); - String fullSql = sqlBuilder.isDivisions(false) + String fullSql = sqlBuilder.isDivisions(false).isCsvMode(ConfigCache.isCsvMode()) .builder(); return new QuerySqlEntry(tableMetadata.getTableName(), fullSql, 0, tableMetadata.getTableRows()); }; diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SelectSqlBuilder.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SelectSqlBuilder.java index 540ae1f..9ad37a8 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SelectSqlBuilder.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SelectSqlBuilder.java @@ -98,6 +98,7 @@ public class SelectSqlBuilder { private boolean isHalfOpenHalfClosed = true; private boolean isFirst = false; private boolean isEnd = false; + private boolean isCsvMode = false; /** * Table fragment query SQL Statement Builder @@ -161,6 +162,16 @@ public class SelectSqlBuilder { return this; } + /** + * 设置当前校验模式是否为CSV模式 + * + * @param isCsvMode isCsvMode + * @return builder + */ + public SelectSqlBuilder isCsvMode(boolean isCsvMode) { + this.isCsvMode = isCsvMode; + return this; + } /** * Table fragment query SQL Statement Builder * @@ -209,7 +220,11 @@ public class SelectSqlBuilder { return getNumberPkConditionFull(primaryKey); } if (isFirst) { - return primaryKey + "< " + offset; + if (isCsvMode) { + return primaryKey + "<= " + offset; + } else { + return primaryKey + "< " + offset; + } } if (isEnd) { return primaryKey + ">= " + start; @@ -234,7 +249,11 @@ public class SelectSqlBuilder { return getPkConditionFull(primaryKey); } if (isFirst) { - return primaryKey + " <= '" + seqEnd + "'"; + if (isCsvMode) { + return primaryKey + "<= '" + seqEnd + "'"; + } else { + return primaryKey + "< '" + seqEnd + "'"; + } } if (isEnd) { return primaryKey + ">= '" + seqStart + "'"; diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimaryAutoSliceQueryStatement.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimaryAutoSliceQueryStatement.java index 46d8d63..4d26663 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimaryAutoSliceQueryStatement.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimaryAutoSliceQueryStatement.java @@ -15,6 +15,7 @@ package org.opengauss.datachecker.extract.task.sql; +import org.opengauss.datachecker.common.config.ConfigCache; import org.opengauss.datachecker.common.entry.extract.TableMetadata; import org.opengauss.datachecker.extract.task.CheckPoint; @@ -52,7 +53,8 @@ public class SinglePrimaryAutoSliceQueryStatement implements AutoSliceQueryState taskOffset = singlePrimaryCheckPoint.translateBetweenString(checkPointList); } final SelectSqlBuilder sqlBuilder = new SelectSqlBuilder(tableMetadata); - sqlBuilder.isDivisions(taskOffset.length > 1); + sqlBuilder.isDivisions(taskOffset.length > 1) + .isCsvMode(ConfigCache.isCsvMode()); String tableName = tableMetadata.getTableName(); IntStream.range(0, taskOffset.length).forEach(idx -> { sqlBuilder.isFullCondition(idx == taskOffset.length - 1).offset(taskOffset[idx][0], taskOffset[idx][1]); diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimarySliceQueryStatement.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimarySliceQueryStatement.java index 862fa6c..48623fe 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimarySliceQueryStatement.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/task/sql/SinglePrimarySliceQueryStatement.java @@ -49,6 +49,7 @@ public class SinglePrimarySliceQueryStatement implements SliceQueryStatement { sqlBuilder.isFirstCondition(slice.getNo() == 1); sqlBuilder.isEndCondition(slice.getNo() == slice.getTotal()); sqlBuilder.isHalfOpenHalfClosed(isHalfOpenHalfClosed); + sqlBuilder.isCsvMode(ConfigCache.isCsvMode()); ColumnsMetaData primaryKey = tableMetadata.getSinglePrimary(); boolean isDigit = MetaDataUtil.isDigitPrimaryKey(primaryKey); Object offset = translateOffset(isDigit, slice.getBeginIdx()); -- Gitee