From 1d83cabbc132fe9c43c5c93b7ecd541cd79ff5f0 Mon Sep 17 00:00:00 2001 From: mystarry-sky Date: Tue, 11 Mar 2025 16:30:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E9=87=8F=E6=A0=A1=E9=AA=8CopenGauss?= =?UTF-8?q?=E4=BE=A7=E6=9F=A5=E8=AF=A2=E5=94=AF=E4=B8=80=E7=BA=A6=E6=9D=9F?= =?UTF-8?q?=E8=A1=A8=E5=85=83=E6=95=B0=E6=8D=AE=E5=A4=B1=E8=B4=A5=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E8=A1=A8=E6=A0=A1=E9=AA=8C=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../access/AbstractDataAccessService.java | 26 +++++++++++++++++++ .../data/access/OpgsDataAccessService.java | 11 +++++++- 2 files changed, 36 insertions(+), 1 deletion(-) 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 4fa8ea5..d779268 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 ff83211..6d23ad3 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 -- Gitee