From 37590f177824ee1be99381a0d17b57b6983a65f4 Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Tue, 27 Feb 2024 16:41:56 +0800 Subject: [PATCH] Make sure external table fetched dbId before call getRowCount. (#31379) --- .../java/org/apache/doris/datasource/ExternalTable.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java index ce3220a05f..a84f637cd2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java @@ -297,6 +297,14 @@ public class ExternalTable implements TableIf, Writable, GsonPostProcessable { @Override public long getRowCount() { + // Return 0 if makeSureInitialized throw exception. + // For example, init hive table may throw NotSupportedException. + try { + makeSureInitialized(); + } catch (Exception e) { + LOG.warn("Failed to initialize table {}.{}.{}", catalog.name, dbName, name, e); + return 0; + } // All external table should get external row count from cache. return Env.getCurrentEnv().getExtMetaCacheMgr().getRowCountCache().getCachedRowCount(catalog.getId(), dbId, id); }