This is an automated email from the ASF dual-hosted git repository.

justinchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 2ff8310ca2e Avoided "table not exist" related NPEs  (#16357)
2ff8310ca2e is described below

commit 2ff8310ca2e6f134ab70d98f998d0c232f585d8d
Author: Caideyipi <[email protected]>
AuthorDate: Mon Sep 8 17:52:24 2025 +0800

    Avoided "table not exist" related NPEs  (#16357)
    
    * fix
    
    * fix
    
    * Update IoTDBDeletionTableIT.java
---
 .../relational/it/db/it/IoTDBDeletionTableIT.java  |  2 +-
 .../dataregion/DataExecutionVisitor.java           |  4 +--
 .../runtime/TableNotExistsRuntimeException.java    | 36 ----------------------
 .../db/queryengine/plan/analyze/AnalyzeUtils.java  |  3 --
 .../analyze/cache/schema/DataNodeTTLCache.java     |  2 +-
 .../relational/analyzer/StatementAnalyzer.java     |  9 ++----
 .../relational/metadata/TableMetadataImpl.java     |  4 +--
 .../metadata/fetcher/TableDeviceSchemaFetcher.java |  4 ---
 .../fetcher/TableHeaderSchemaValidator.java        |  4 +--
 .../fetcher/cache/TableDeviceSchemaCache.java      |  4 +--
 .../plan/relational/sql/parser/AstBuilder.java     | 16 ++++------
 .../db/schemaengine/table/DataNodeTableCache.java  | 15 +++++++--
 .../db/storageengine/dataregion/DataRegion.java    |  7 +++--
 .../db/storageengine/load/LoadTsFileManager.java   |  2 +-
 14 files changed, 35 insertions(+), 77 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
index fb98c162026..699c0d636e1 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBDeletionTableIT.java
@@ -280,7 +280,7 @@ public class IoTDBDeletionTableIT {
         statement.execute("DELETE FROM vehicleNonExist");
         fail("should not reach here!");
       } catch (SQLException e) {
-        assertEquals("701: Table vehiclenonexist not found", e.getMessage());
+        assertEquals("550: Table 'test.vehiclenonexist' does not exist.", 
e.getMessage());
       }
 
       try (ResultSet set = statement.executeQuery("SELECT s0 FROM vehicle1")) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataExecutionVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataExecutionVisitor.java
index 7431aa9a79d..cdce05b46c0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataExecutionVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/dataregion/DataExecutionVisitor.java
@@ -28,7 +28,7 @@ import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.WriteProcessRejectException;
 import org.apache.iotdb.db.exception.query.OutOfTTLException;
 import org.apache.iotdb.db.exception.runtime.TableLostRuntimeException;
-import org.apache.iotdb.db.exception.runtime.TableNotExistsRuntimeException;
+import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanVisitor;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.pipe.PipeEnrichedDeleteDataNode;
@@ -162,7 +162,7 @@ public class DataExecutionVisitor extends 
PlanVisitor<TSStatus, DataRegion> {
         }
       }
       return firstStatus;
-    } catch (TableNotExistsRuntimeException | TableLostRuntimeException e) {
+    } catch (SemanticException | TableLostRuntimeException e) {
       LOGGER.error("Error in executing plan node: {}, caused by {}", node, 
e.getMessage());
       return RpcUtils.getStatus(e.getErrorCode(), e.getMessage());
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/exception/runtime/TableNotExistsRuntimeException.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/exception/runtime/TableNotExistsRuntimeException.java
deleted file mode 100644
index 8590b4c70cf..00000000000
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/exception/runtime/TableNotExistsRuntimeException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.exception.runtime;
-
-import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
-import org.apache.iotdb.rpc.TSStatusCode;
-
-public class TableNotExistsRuntimeException extends IoTDBRuntimeException {
-
-  public TableNotExistsRuntimeException(final String databaseName, final 
String tableName) {
-    super(
-        String.format("Table %s in the database %s is not exists.", tableName, 
databaseName),
-        TSStatusCode.TABLE_NOT_EXISTS.getStatusCode());
-  }
-
-  public TableNotExistsRuntimeException(final Throwable cause) {
-    super(cause, TSStatusCode.TABLE_NOT_EXISTS.getStatusCode());
-  }
-}
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java
index b53311d9f23..2e0b0b52fdc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeUtils.java
@@ -347,9 +347,6 @@ public class AnalyzeUtils {
     node.setDatabaseName(databaseName);
 
     final TsTable table = 
DataNodeTableCache.getInstance().getTable(databaseName, tableName);
-    if (table == null) {
-      throw new SemanticException("Table " + tableName + " not found");
-    }
 
     DataNodeTreeViewSchemaUtils.checkTableInWrite(databaseName, table);
     // Maybe set by pipe transfer
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
index b63d0400dbc..446f320b66a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
@@ -86,7 +86,7 @@ public class DataNodeTTLCache {
   }
 
   public long getTTLForTable(final String database, final String table) {
-    final TsTable tsTable = 
DataNodeTableCache.getInstance().getTable(database, table);
+    final TsTable tsTable = 
DataNodeTableCache.getInstance().getTable(database, table, false);
     return tsTable == null ? Long.MAX_VALUE : tsTable.getCachedTableTTL();
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
index 404822cec95..f78cfe464e7 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java
@@ -564,9 +564,6 @@ public class StatementAnalyzer {
           new QualifiedObjectName(node.getDatabase(), node.getTableName()));
       final TsTable table =
           DataNodeTableCache.getInstance().getTable(node.getDatabase(), 
node.getTableName());
-      if (Objects.isNull(table)) {
-        TableMetadataImpl.throwTableNotExistsException(node.getDatabase(), 
node.getTableName());
-      }
       DataNodeTreeViewSchemaUtils.checkTableInWrite(node.getDatabase(), table);
       node.parseModEntries(table);
       analyzeTraverseDevice(node, context, node.getWhere().isPresent());
@@ -4448,10 +4445,8 @@ public class StatementAnalyzer {
       queryContext.setQueryType(QueryType.WRITE);
       DataNodeSchemaLockManager.getInstance()
           .takeReadLock(queryContext, 
SchemaLockType.VALIDATE_VS_DELETION_TABLE);
-      if (Objects.isNull(
-          DataNodeTableCache.getInstance().getTable(node.getDatabase(), 
node.getTable()))) {
-        TableMetadataImpl.throwTableNotExistsException(node.getDatabase(), 
node.getTable());
-      }
+      // Check if the table exists
+      DataNodeTableCache.getInstance().getTable(node.getDatabase(), 
node.getTable());
       return null;
     }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
index da93688e772..a12add71ffc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
@@ -101,7 +101,7 @@ public class TableMetadataImpl implements Metadata {
 
   @Override
   public boolean tableExists(final QualifiedObjectName name) {
-    return tableCache.getTable(name.getDatabaseName(), name.getObjectName()) 
!= null;
+    return tableCache.getTable(name.getDatabaseName(), name.getObjectName(), 
false) != null;
   }
 
   @Override
@@ -110,7 +110,7 @@ public class TableMetadataImpl implements Metadata {
     final String databaseName = name.getDatabaseName();
     final String tableName = name.getObjectName();
 
-    final TsTable table = tableCache.getTable(databaseName, tableName);
+    final TsTable table = tableCache.getTable(databaseName, tableName, false);
     if (table == null) {
       return Optional.empty();
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
index 1226a9c8626..643f5364faa 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableDeviceSchemaFetcher.java
@@ -38,7 +38,6 @@ import 
org.apache.iotdb.db.queryengine.plan.relational.analyzer.predicate.schema
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.AlignedDeviceEntry;
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.DeviceEntry;
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.NonAlignedDeviceEntry;
-import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.TableMetadataImpl;
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.cache.IDeviceSchema;
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.cache.TableDeviceSchemaCache;
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.cache.TreeDeviceNormalSchema;
@@ -188,9 +187,6 @@ public class TableDeviceSchemaFetcher {
     final Map<String, List<DeviceEntry>> deviceEntryMap = new HashMap<>();
     final TsTable tableInstance = 
DataNodeTableCache.getInstance().getTable(database, table);
     final AtomicBoolean mayContainDuplicateDevice = new AtomicBoolean(false);
-    if (tableInstance == null) {
-      TableMetadataImpl.throwTableNotExistsException(database, table);
-    }
     if (!TreeViewSchema.isTreeViewTable(tableInstance)) {
       deviceEntryMap.put(database, new ArrayList<>());
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableHeaderSchemaValidator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableHeaderSchemaValidator.java
index 2d127c3aeb5..48d0b3624d4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableHeaderSchemaValidator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/TableHeaderSchemaValidator.java
@@ -116,13 +116,13 @@ public class TableHeaderSchemaValidator {
         IoTDBDescriptor.getInstance().getConfig().isAutoCreateSchemaEnabled();
     // first round validate, check existing schema
     if (table == null) {
-      // TODO table metadata: authority check for table create
       // auto create missing table
       // it's ok that many write requests concurrently auto create same table, 
the thread safety
       // will be guaranteed by ProcedureManager.createTable in CN
       if (allowCreateTable && isAutoCreateSchemaEnabled) {
         autoCreateTable(context, database, tableSchema);
-        table = DataNodeTableCache.getInstance().getTable(database, 
tableSchema.getTableName());
+        table =
+            DataNodeTableCache.getInstance().getTable(database, 
tableSchema.getTableName(), false);
         if (table == null) {
           throw new IllegalStateException(
               "auto create table succeed, but cannot get table schema in 
current node's DataNodeTableCache, may be caused by concurrently auto creating 
table");
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/cache/TableDeviceSchemaCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/cache/TableDeviceSchemaCache.java
index 63401d59c0c..90fc4fb0e94 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/cache/TableDeviceSchemaCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/fetcher/cache/TableDeviceSchemaCache.java
@@ -150,7 +150,7 @@ public class TableDeviceSchemaCache {
     try {
       // Avoid stale table
       if (Objects.isNull(
-          DataNodeTableCache.getInstance().getTable(database, 
deviceId.getTableName()))) {
+          DataNodeTableCache.getInstance().getTable(database, 
deviceId.getTableName(), false))) {
         return;
       }
       dualKeyCache.update(
@@ -235,7 +235,7 @@ public class TableDeviceSchemaCache {
     try {
       // Avoid stale table
       if (Objects.isNull(
-          DataNodeTableCache.getInstance().getTable(database, 
deviceId.getTableName()))) {
+          DataNodeTableCache.getInstance().getTable(database, 
deviceId.getTableName(), false))) {
         return;
       }
       dualKeyCache.update(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
index a4bc97a818d..5d7333e5b46 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/parser/AstBuilder.java
@@ -262,7 +262,6 @@ import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.TerminalNode;
 import org.apache.tsfile.enums.TSDataType;
-import org.apache.tsfile.exception.write.NoTableException;
 import org.apache.tsfile.utils.TimeDuration;
 import org.apache.tsfile.write.schema.MeasurementSchema;
 
@@ -779,15 +778,12 @@ public class AstBuilder extends 
RelationalSqlBaseVisitor<Node> {
         return new Insert(new Table(qualifiedName), identifiers, query);
       }
     } else {
-      if (query.getQueryBody() instanceof Values) {
-        final TsTable table = 
DataNodeTableCache.getInstance().getTable(databaseName, tableName);
-        if (table == null) {
-          throw new SemanticException(new NoTableException(tableName));
-        }
-        return visitInsertValues(databaseName, table, ((Values) 
query.getQueryBody()));
-      } else {
-        return new Insert(new Table(qualifiedName), query);
-      }
+      return query.getQueryBody() instanceof Values
+          ? visitInsertValues(
+              databaseName,
+              DataNodeTableCache.getInstance().getTable(databaseName, 
tableName),
+              ((Values) query.getQueryBody()))
+          : new Insert(new Table(qualifiedName), query);
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
index 3ff88f35e92..fdbca98cc00 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.commons.utils.PathUtils;
 import org.apache.iotdb.confignode.rpc.thrift.TFetchTableResp;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import 
org.apache.iotdb.db.queryengine.plan.execution.config.executor.ClusterConfigTaskExecutor;
+import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.TableMetadataImpl;
 import org.apache.iotdb.rpc.TSStatusCode;
 
 import org.apache.tsfile.utils.Pair;
@@ -291,21 +292,29 @@ public class DataNodeTableCache implements ITableCache {
 
   public TsTable getTableInWrite(final String database, final String 
tableName) {
     final TsTable result = getTableInCache(database, tableName);
-    return Objects.nonNull(result) ? result : getTable(database, tableName);
+    return Objects.nonNull(result) ? result : getTable(database, tableName, 
false);
+  }
+
+  public TsTable getTable(final String database, final String tableName) {
+    return getTable(database, tableName, true);
   }
 
   /**
    * The following logic can handle the cases when configNode failed to clear 
some table in {@link
    * #preUpdateTableMap}, due to the failure of "commit" or rollback of 
"pre-update".
    */
-  public TsTable getTable(String database, final String tableName) {
+  public TsTable getTable(String database, final String tableName, final 
boolean force) {
     database = PathUtils.unQualifyDatabaseName(database);
     final Map<String, Map<String, Long>> preUpdateTables =
         mayGetTableInPreUpdateMap(database, tableName);
     if (Objects.nonNull(preUpdateTables) && !preUpdateTables.isEmpty()) {
       updateTable(getTablesInConfigNode(preUpdateTables), preUpdateTables);
     }
-    return getTableInCache(database, tableName);
+    final TsTable table = getTableInCache(database, tableName);
+    if (Objects.isNull(table) && force) {
+      TableMetadataImpl.throwTableNotExistsException(database, tableName);
+    }
+    return table;
   }
 
   private Map<String, Map<String, Long>> mayGetTableInPreUpdateMap(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 91ad671a19e..5a2669a8767 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -59,7 +59,6 @@ import org.apache.iotdb.db.exception.query.OutOfTTLException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.exception.quota.ExceedQuotaException;
 import org.apache.iotdb.db.exception.runtime.TableLostRuntimeException;
-import org.apache.iotdb.db.exception.runtime.TableNotExistsRuntimeException;
 import org.apache.iotdb.db.pipe.consensus.deletion.DeletionResource;
 import org.apache.iotdb.db.pipe.consensus.deletion.DeletionResource.Status;
 import org.apache.iotdb.db.pipe.consensus.deletion.DeletionResourceManager;
@@ -82,6 +81,7 @@ import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNo
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsOfOneDeviceNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.RelationalDeleteDataNode;
+import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.TableMetadataImpl;
 import org.apache.iotdb.db.queryengine.plan.relational.metadata.TableSchema;
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.cache.LastCacheLoadStrategy;
 import 
org.apache.iotdb.db.queryengine.plan.relational.metadata.fetcher.cache.TableDeviceSchemaCache;
@@ -1414,7 +1414,8 @@ public class DataRegion implements IDataRegionForQuery {
       tsFileProcessor.registerToTsFile(
           tableName,
           t -> {
-            TsTable tsTable = 
DataNodeTableCache.getInstance().getTable(getDatabaseName(), t);
+            TsTable tsTable =
+                DataNodeTableCache.getInstance().getTable(getDatabaseName(), 
t, false);
             if (tsTable == null) {
               // There is a high probability that the leader node has been 
executed and is currently
               // located in the follower node.
@@ -1436,7 +1437,7 @@ public class DataRegion implements IDataRegionForQuery {
                       e.getMessage());
                 }
                 if (tsTable == null) {
-                  throw new TableNotExistsRuntimeException(getDatabaseName(), 
tableName);
+                  
TableMetadataImpl.throwTableNotExistsException(getDatabaseName(), tableName);
                 }
               } else {
                 // Here may be invoked by leader node, the table is very 
unexpected not exist in the
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
index 8ac0fe4c5ff..f6203be7be3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
@@ -488,7 +488,7 @@ public class LoadTsFileManager {
         // If the table does not exist, it means that the table is all deleted 
by mods
         final TsTable table =
             DataNodeTableCache.getInstance()
-                .getTable(partitionInfo.getDataRegion().getDatabaseName(), 
tableName);
+                .getTable(partitionInfo.getDataRegion().getDatabaseName(), 
tableName, false);
         if (Objects.nonNull(table)) {
           writer
               .getSchema()

Reply via email to