diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java index 281a0e8250206f..22f0cad9d00a8c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java @@ -50,11 +50,10 @@ protected Optional doLoad(StatisticsCacheKey key) { } // Load from data source metadata try { - TableIf table = Env.getCurrentEnv().getCatalogMgr().getCatalog(key.catalogId) - .getDbOrMetaException(key.dbId).getTableOrMetaException(key.tableId); + TableIf table = StatisticsUtil.findTable(key.catalogId, key.dbId, key.tableId); columnStatistic = table.getColumnStatistic(key.colName); } catch (Exception e) { - LOG.warn(String.format("Exception to get column statistics by metadata. [Catalog:%d, DB:%d, Table:%d]", + LOG.debug(String.format("Exception to get column statistics by metadata. [Catalog:%d, DB:%d, Table:%d]", key.catalogId, key.dbId, key.tableId), e); } return columnStatistic; diff --git a/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java b/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java index 95ed5023e3652b..cde8d20177f490 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java @@ -18,12 +18,17 @@ package org.apache.doris.statistics; import org.apache.doris.catalog.Column; +import org.apache.doris.catalog.DatabaseIf; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.catalog.TableIf; import org.apache.doris.catalog.Type; +import org.apache.doris.catalog.external.ExternalDatabase; +import org.apache.doris.catalog.external.ExternalTable; import org.apache.doris.catalog.external.HMSExternalDatabase; import org.apache.doris.catalog.external.HMSExternalTable; import org.apache.doris.common.ThreadPoolManager; +import org.apache.doris.datasource.CatalogIf; import org.apache.doris.datasource.CatalogMgr; import org.apache.doris.datasource.HMSExternalCatalog; import org.apache.doris.ha.FrontendNodeType; @@ -57,6 +62,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; +import java.util.function.Function; public class CacheTest extends TestWithFeService { @@ -229,20 +235,34 @@ public Env getCurrentEnv() { } }; + new MockUp() { + @Mock + public CatalogIf> + getCatalogOrException(long id, Function e) throws E { + return catalog; + } + }; + + new MockUp() { + @Mock + public ExternalDatabase getDbNullable(long dbId) { + return db; + } + }; + + new MockUp() { + + @Mock + public HMSExternalTable getTableNullable(long tableId) { + return table; + } + }; + new Expectations() { { env.getCatalogMgr(); result = mgr; - mgr.getCatalog(1); - result = catalog; - - catalog.getDbOrMetaException(1); - result = db; - - db.getTableOrMetaException(1); - result = table; - table.getColumnStatistic("col"); result = new ColumnStatistic(1, 2, null, 3, 4, 5, 6, 7,