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