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

jiangtian pushed a commit to branch sevo_support
in repository https://gitbox.apache.org/repos/asf/tsfile.git

commit 24205774c45917a6ac7d64fb3faf96b0ba405156
Author: Tian Jiang <[email protected]>
AuthorDate: Sun Jan 4 16:04:41 2026 +0800

    add  void writeToFileWriter(TsFileIOWriter tsfileWriter, Function<String, 
String> measurementNameRemapper) throws IOException;
---
 .../tsfile/write/chunk/AlignedChunkWriterImpl.java    | 10 ++++++++++
 .../apache/tsfile/write/chunk/ChunkWriterImpl.java    | 19 ++++++++++++++-----
 .../org/apache/tsfile/write/chunk/IChunkWriter.java   |  6 ++++++
 .../apache/tsfile/write/chunk/ValueChunkWriter.java   | 16 ++++++++++++----
 4 files changed, 42 insertions(+), 9 deletions(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
index 27761e67..08ae5753 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkWriterImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tsfile.write.chunk;
 
+import java.util.function.Function;
 import org.apache.tsfile.block.column.Column;
 import org.apache.tsfile.common.conf.TSFileDescriptor;
 import org.apache.tsfile.encoding.encoder.Encoder;
@@ -477,6 +478,15 @@ public class AlignedChunkWriterImpl implements 
IChunkWriter {
     }
   }
 
+  @Override
+  public void writeToFileWriter(TsFileIOWriter tsfileWriter,
+      Function<String, String> measurementNameRemapper) throws IOException {
+    timeChunkWriter.writeToFileWriter(tsfileWriter);
+    for (ValueChunkWriter valueChunkWriter : valueChunkWriterList) {
+      valueChunkWriter.writeToFileWriter(tsfileWriter, 
measurementNameRemapper);
+    }
+  }
+
   @Override
   public long estimateMaxSeriesMemSize() {
     long estimateMaxSeriesMemSize = timeChunkWriter.estimateMaxSeriesMemSize();
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
index 25e0410b..d450b373 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ChunkWriterImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tsfile.write.chunk;
 
+import java.util.function.Function;
 import org.apache.tsfile.common.conf.TSFileDescriptor;
 import org.apache.tsfile.compress.ICompressor;
 import org.apache.tsfile.encoding.encoder.SDTEncoder;
@@ -346,8 +347,14 @@ public class ChunkWriterImpl implements IChunkWriter {
 
   @Override
   public void writeToFileWriter(TsFileIOWriter tsfileWriter) throws 
IOException {
+    writeToFileWriter(tsfileWriter, null);
+  }
+
+  @Override
+  public void writeToFileWriter(TsFileIOWriter tsfileWriter,
+      Function<String, String> measurementNameRemapper) throws IOException {
     sealCurrentPage();
-    writeAllPagesOfChunkToTsFile(tsfileWriter, statistics);
+    writeAllPagesOfChunkToTsFile(tsfileWriter, statistics, 
measurementNameRemapper);
 
     // reinit this chunk writer
     pageBuffer.reset();
@@ -472,19 +479,21 @@ public class ChunkWriterImpl implements IChunkWriter {
   /**
    * write the page to specified IOWriter.
    *
-   * @param writer the specified IOWriter
-   * @param statistics the chunk statistics
+   * @param writer                  the specified IOWriter
+   * @param statistics              the chunk statistics
+   * @param measurementNameRemapper
    * @throws IOException exception in IO
    */
   private void writeAllPagesOfChunkToTsFile(
-      TsFileIOWriter writer, Statistics<? extends Serializable> statistics) 
throws IOException {
+      TsFileIOWriter writer, Statistics<? extends Serializable> statistics,
+      Function<String, String> measurementNameRemapper) throws IOException {
     if (statistics.getCount() == 0) {
       return;
     }
 
     // start to write this column chunk
     writer.startFlushChunk(
-        measurementSchema.getMeasurementName(),
+        measurementNameRemapper == null ? 
measurementSchema.getMeasurementName() : 
measurementNameRemapper.apply(measurementSchema.getMeasurementName()),
         compressor.getType(),
         measurementSchema.getType(),
         measurementSchema.getEncodingType(),
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkWriter.java
index 85b9828a..11304073 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkWriter.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkWriter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tsfile.write.chunk;
 
+import java.util.function.Function;
 import org.apache.tsfile.write.writer.TsFileIOWriter;
 
 import java.io.IOException;
@@ -28,6 +29,11 @@ public interface IChunkWriter {
   /** flush data to TsFileIOWriter. */
   void writeToFileWriter(TsFileIOWriter tsfileWriter) throws IOException;
 
+  /**
+   * flush data to TsFileIOWriter, may rename the measurement in the file 
according to the remapper.
+   */
+  void writeToFileWriter(TsFileIOWriter tsfileWriter, Function<String, String> 
measurementNameRemapper) throws IOException;
+
   /** estimate memory usage of this series. */
   long estimateMaxSeriesMemSize();
 
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
index d011e125..a778f741 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/ValueChunkWriter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tsfile.write.chunk;
 
+import java.util.function.Function;
 import org.apache.tsfile.common.conf.TSFileDescriptor;
 import org.apache.tsfile.common.constant.TsFileConstant;
 import org.apache.tsfile.compress.ICompressor;
@@ -295,8 +296,13 @@ public class ValueChunkWriter {
   }
 
   public void writeToFileWriter(TsFileIOWriter tsfileWriter) throws 
IOException {
+    writeToFileWriter(tsfileWriter, null);
+  }
+
+  public void writeToFileWriter(TsFileIOWriter tsfileWriter,
+      Function<String, String> measurementNameRemapper) throws IOException {
     sealCurrentPage();
-    writeAllPagesOfChunkToTsFile(tsfileWriter);
+    writeAllPagesOfChunkToTsFile(tsfileWriter, measurementNameRemapper);
 
     // reinit this chunk writer
     pageBuffer.reset();
@@ -385,7 +391,9 @@ public class ValueChunkWriter {
    * @param writer the specified IOWriter
    * @throws IOException exception in IO
    */
-  public void writeAllPagesOfChunkToTsFile(TsFileIOWriter writer) throws 
IOException {
+  public void writeAllPagesOfChunkToTsFile(TsFileIOWriter writer,
+      Function<String, String> measurementNameRemapper) throws IOException {
+    String finalMeasurementId = measurementNameRemapper == null ? 
measurementId : measurementNameRemapper.apply(measurementId);
     if (statistics.getCount() == 0) {
       if (pageBuffer.size() == 0) {
         return;
@@ -395,7 +403,7 @@ public class ValueChunkWriter {
       // chunkGroup during compaction. To save the disk space, we only 
serialize chunkHeader for the
       // empty valueChunk, whose dataSize is 0.
       writer.startFlushChunk(
-          measurementId,
+          finalMeasurementId,
           compressionType,
           dataType,
           encodingType,
@@ -409,7 +417,7 @@ public class ValueChunkWriter {
 
     // start to write this column chunk
     writer.startFlushChunk(
-        measurementId,
+        finalMeasurementId,
         compressionType,
         dataType,
         encodingType,

Reply via email to