diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java index 4fa8ea52417b3c3a82f1a475febc289a01d9e3af..d779268551ddac3b0f8f0ed9136bdceb0d6ecb82 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/AbstractDataAccessService.java @@ -283,6 +283,32 @@ public abstract class AbstractDataAccessService implements DataAccessService { return list; } + /** + * query table metadata + * + * @param executeQueryStatement executeQueryStatement + * @return metadata + */ + public TableMetadata adasQueryTableMetadata(String executeQueryStatement) { + Connection connection = getConnection(); + TableMetadata metadata = null; + try (PreparedStatement ps = connection.prepareStatement(executeQueryStatement); + ResultSet resultSet = ps.executeQuery()) { + while (resultSet.next()) { + metadata = new TableMetadata(); + metadata.setSchema(resultSet.getString(RS_COL_SCHEMA)); + metadata.setTableName(resultSet.getString(RS_COL_TABLE_NAME)); + metadata.setTableRows(resultSet.getLong(RS_COL_TABLE_ROWS)); + metadata.setAvgRowLength(resultSet.getLong(RS_COL_AVG_ROW_LENGTH)); + } + } catch (SQLException esql) { + LogUtils.error(log, "{}adasQueryTableMetadata error: ", ErrorCode.EXECUTE_QUERY_SQL, esql); + } finally { + closeConnection(connection); + } + return metadata; + } + /** * 查询表数据抽样检查点清单 * diff --git a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/OpgsDataAccessService.java b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/OpgsDataAccessService.java index ff83211a2651e8752d46d9d637bf14d1a83606b9..6d23ad332b18e5d40ef33740788a4081875d24fd 100644 --- a/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/OpgsDataAccessService.java +++ b/datachecker-extract/src/main/java/org/opengauss/datachecker/extract/data/access/OpgsDataAccessService.java @@ -37,6 +37,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Objects; @@ -149,7 +150,15 @@ public class OpgsDataAccessService extends AbstractDataAccessService { @Override public TableMetadata queryTableMetadata(String tableName) { - return wrapperTableMetadata(opgsMetaDataMapper.queryTableMetadata(properties.getSchema(), tableName)); + LowerCaseTableNames lowerCaseTableNames = getLowerCaseTableNames(); + boolean isSensitive = Objects.equals(LowerCaseTableNames.SENSITIVE, lowerCaseTableNames); + String colTableName = isSensitive ? "c.relname tableName" : "lower(c.relname) tableName"; + String queryTable = isSensitive ? tableName : tableName.toLowerCase(Locale.ROOT); + String sql = " select n.nspname tableSchema, " + colTableName + ",c.reltuples tableRows, " + + " case when c.reltuples>0 then pg_table_size(c.oid)/c.reltuples else 0 end as avgRowLength " + + " from pg_class c LEFT JOIN pg_namespace n on n.oid = c.relnamespace where n.nspname='" + + properties.getSchema() + "' and c.relkind ='r' and c.relname='" + queryTable + "';"; + return wrapperTableMetadata(adasQueryTableMetadata(sql)); } @Override