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()