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

jt2594838 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 bd3109ef1ba Fix tag index query for pre-deleted timeseries (#18751)
bd3109ef1ba is described below

commit bd3109ef1ba56b202d0a76753a39c76b408ce514
Author: Caideyipi <[email protected]>
AuthorDate: Tue Sep 29 14:51:03 2026 +0800

    Fix tag index query for pre-deleted timeseries (#18751)
---
 .../schemaengine/schemaregion/tag/TagManager.java  |  3 +++
 .../schemaregion/tag/TagManagerTest.java           | 24 ++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java
index 314e971e3ac..cc1cb161e30 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManager.java
@@ -325,6 +325,9 @@ public class TagManager {
             nextMatched = null;
             while (allMatchedNodes.hasNext()) {
               final IMeasurementMNode<?> node = allMatchedNodes.next();
+              if (node.isPreDeleted()) {
+                continue;
+              }
               if (plan.isPrefixMatch()
                   ? pathPattern.prefixMatchFullPath(node.getPartialPath())
                   : pathPattern.matchFullPath(node.getPartialPath())) {
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManagerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManagerTest.java
index c96495c635c..1cba802dcec 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManagerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/schemaengine/schemaregion/tag/TagManagerTest.java
@@ -18,12 +18,17 @@
  */
 package org.apache.iotdb.db.schemaengine.schemaregion.tag;
 
+import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.commons.schema.filter.impl.TagFilter;
 import org.apache.iotdb.commons.schema.node.role.IMeasurementMNode;
 import org.apache.iotdb.commons.schema.node.utils.IMNodeFactory;
 import org.apache.iotdb.db.schemaengine.rescon.MemSchemaEngineStatistics;
 import org.apache.iotdb.db.schemaengine.rescon.MemSchemaRegionStatistics;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.impl.mem.mnode.IMemMNode;
 import 
org.apache.iotdb.db.schemaengine.schemaregion.mtree.loader.MNodeFactoryLoader;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.read.req.IShowTimeSeriesPlan;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.ITimeSeriesSchemaInfo;
+import 
org.apache.iotdb.db.schemaengine.schemaregion.read.resp.reader.ISchemaReader;
 
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.external.commons.io.FileUtils;
@@ -34,6 +39,7 @@ import org.apache.tsfile.write.schema.MeasurementSchema;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 import java.io.File;
 import java.nio.file.Files;
@@ -188,6 +194,24 @@ public class TagManagerTest {
     Assert.assertEquals(0, regionStatistics.getRegionMemoryUsage());
   }
 
+  @Test
+  public void preDeletedMeasurementIsSkippedByIndexReader() throws Exception {
+    initTagManager();
+    final IMeasurementMNode<?> node = newMeasurementMNode("s0");
+    node.setPreDeleted(true);
+    tagManager.addIndex("key", "value", node);
+
+    final IShowTimeSeriesPlan plan = Mockito.mock(IShowTimeSeriesPlan.class);
+    Mockito.when(plan.getSchemaFilter()).thenReturn(new TagFilter("key", 
"value", false));
+    Mockito.when(plan.getPath()).thenReturn(new PartialPath("s0"));
+
+    final ISchemaReader<ITimeSeriesSchemaInfo> reader =
+        tagManager.getTimeSeriesReaderWithIndex(plan);
+    Assert.assertFalse(reader.hasNext());
+    Assert.assertTrue(reader.isSuccess());
+    reader.close();
+  }
+
   private void initTagManager() throws Exception {
     tempDir = Files.createTempDirectory("tag-manager").toFile();
     regionStatistics = new MemSchemaRegionStatistics(0, new 
MemSchemaEngineStatistics());

Reply via email to