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());