diff --git a/config/log4j2.xml b/config/log4j2.xml index 46a03ad6b3e86a4f52b37c2b5c8888116d3ac2f7..929064e70ff568722be1467b1e0d128efd41160e 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 2c6a4818b541ebc879f71c0ab27e74149f5d4e3e..88d1274ddc896b7eb8ec439ebfd982cf936063eb 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 cc144a1e8a0f170b4f236ad264609134f899e0a6..571c383279ed2bccb4d4ba54f56a933f3671ea51 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 540ae1fc190b055ec7ef1fb145533f9accc61690..9ad37a8119c3ba7b680e21a68f55c77a267bde6d 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 46d8d63ae79176d4a12448dc11b3ed8b1d8dad20..4d266633665fbd8aa4f5b86d16107f12273e8d44 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 862fa6cfdbd7ae37f0ed4943ba1a4f00b8680ee1..48623feb54dfa5efd4223ff62921b5557dde0a6d 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());