diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/BaseDataService.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/BaseDataService.java index cc6ce38b480f8ba68b0527bce889a771f866b2f4..469fec4212b0b09f8f6208800eb496f3af71b61e 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/BaseDataService.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/BaseDataService.java @@ -17,6 +17,8 @@ package org.opengauss.datachecker.extract.data; import com.alibaba.druid.pool.DruidDataSource; +import cn.hutool.core.collection.CollectionUtil; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.logging.log4j.Logger; @@ -46,6 +48,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; /** @@ -252,6 +255,21 @@ public class BaseDataService { */ public List queryTableColumnsMetaData(String tableName) { final List columns = dataAccessService.queryTableColumnsMetaData(tableName); + List pkColList = dataAccessService.queryTablePrimaryColumns(tableName); + List ukColList = dataAccessService.queryTableUniqueColumns(tableName); + if (CollectionUtil.isNotEmpty(ukColList)) { + if (CollectionUtil.isNotEmpty(ukColList)) { + pkColList.addAll(ukColList); + } + } + Set pkOrUkSet = pkColList.stream() + .map(PrimaryColumnBean::getColumnName) + .collect(Collectors.toUnmodifiableSet()); + columns.forEach(meta -> { + if (pkOrUkSet.contains(meta.getColumnName())) { + meta.setColumnKey(ColumnKey.PRI); + } + }); return ruleAdapterService.executeColumnRule(columns); } diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/RuleAdapterService.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/RuleAdapterService.java index 72b6c7e52d6e2f7b677dbddb72481cde4faac50a..a52120001a6c9f8827afdcb563bc69f703f5b9ac 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/RuleAdapterService.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/service/RuleAdapterService.java @@ -17,7 +17,9 @@ package org.opengauss.datachecker.extract.service; import org.apache.commons.collections4.CollectionUtils; import org.apache.logging.log4j.Logger; +import org.opengauss.datachecker.common.config.ConfigCache; import org.opengauss.datachecker.common.entry.common.Rule; +import org.opengauss.datachecker.common.entry.enums.CheckMode; import org.opengauss.datachecker.common.entry.enums.RuleType; import org.opengauss.datachecker.common.entry.extract.ColumnsMetaData; import org.opengauss.datachecker.common.entry.extract.TableMetadata; @@ -25,9 +27,11 @@ import org.opengauss.datachecker.common.util.LogUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; + import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * RuleAdapterService @@ -55,7 +59,14 @@ public class RuleAdapterService { */ public void init(Map> rules) { RULES.clear(); - RULES.putAll(rules); + CheckMode checkMode = ConfigCache.getCheckMode(); + if (Objects.equals(CheckMode.FULL, checkMode)) { + RULES.putAll(rules); + } else if (Objects.equals(CheckMode.INCREMENT, checkMode)) { + RULES.put(RuleType.COLUMN, rules.get(RuleType.COLUMN)); + } else { + log.warn("check mode {} is not support rules", checkMode); + } } /**