File tree Expand file tree Collapse file tree 6 files changed +47
-13
lines changed
server/src/main/java/org/apache/iotdb/db
query/reader/chunk/metadata
tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata Expand file tree Collapse file tree 6 files changed +47
-13
lines changed Original file line number Diff line number Diff line change @@ -58,7 +58,7 @@ public DiskAlignedChunkMetadataLoader(
5858 @ Override
5959 public List <IChunkMetadata > loadChunkMetadataList (ITimeSeriesMetadata timeSeriesMetadata ) {
6060 List <AlignedChunkMetadata > alignedChunkMetadataList =
61- ((AlignedTimeSeriesMetadata ) timeSeriesMetadata ).getChunkMetadataList ();
61+ ((AlignedTimeSeriesMetadata ) timeSeriesMetadata ).getCopiedChunkMetadataList ();
6262
6363 // get all sub sensors' modifications
6464 List <List <Modification >> pathModifications =
Original file line number Diff line number Diff line change @@ -57,7 +57,7 @@ public DiskChunkMetadataLoader(
5757 public List <IChunkMetadata > loadChunkMetadataList (ITimeSeriesMetadata timeSeriesMetadata ) {
5858
5959 List <IChunkMetadata > chunkMetadataList =
60- ((TimeseriesMetadata ) timeSeriesMetadata ).getChunkMetadataList ();
60+ ((TimeseriesMetadata ) timeSeriesMetadata ).getCopiedChunkMetadataList ();
6161
6262 List <Modification > pathModifications =
6363 context .getPathModifications (resource .getModFile (), seriesPath );
Original file line number Diff line number Diff line change @@ -80,9 +80,7 @@ public static void modifyChunkMetaData(
8080 if (range .contains (metaData .getStartTime (), metaData .getEndTime ())) {
8181 return true ;
8282 } else {
83- if (!metaData .isModified ()
84- && range .overlaps (
85- new TimeRange (metaData .getStartTime (), metaData .getEndTime ()))) {
83+ if (range .overlaps (new TimeRange (metaData .getStartTime (), metaData .getEndTime ()))) {
8684 metaData .setModified (true );
8785 }
8886 }
@@ -138,11 +136,9 @@ public static void modifyAlignedChunkMetaData(
138136 currentRemoved = true ;
139137 break ;
140138 } else {
141- if (!valueChunkMetadata .isModified ()
142- && range .overlaps (
143- new TimeRange (
144- valueChunkMetadata .getStartTime (),
145- valueChunkMetadata .getEndTime ()))) {
139+ if (range .overlaps (
140+ new TimeRange (
141+ valueChunkMetadata .getStartTime (), valueChunkMetadata .getEndTime ()))) {
146142 valueChunkMetadata .setModified (true );
147143 modified = true ;
148144 }
@@ -155,9 +151,7 @@ public static void modifyAlignedChunkMetaData(
155151 removed = false ;
156152 }
157153 }
158- if (!alignedChunkMetadata .isModified ()) {
159- alignedChunkMetadata .setModified (modified );
160- }
154+ alignedChunkMetadata .setModified (modified );
161155 return removed ;
162156 });
163157 }
Original file line number Diff line number Diff line change @@ -103,13 +103,28 @@ public List<IChunkMetadata> loadChunkMetadataList() throws IOException {
103103 return chunkMetadataLoader .loadChunkMetadataList (this );
104104 }
105105
106+ public List <AlignedChunkMetadata > getCopiedChunkMetadataList () {
107+ List <IChunkMetadata > timeChunkMetadata = timeseriesMetadata .getCopiedChunkMetadataList ();
108+ List <List <IChunkMetadata >> valueChunkMetadataList = new ArrayList <>();
109+ for (TimeseriesMetadata metadata : valueTimeseriesMetadataList ) {
110+ valueChunkMetadataList .add (metadata == null ? null : metadata .getCopiedChunkMetadataList ());
111+ }
112+
113+ return getAlignedChunkMetadata (timeChunkMetadata , valueChunkMetadataList );
114+ }
115+
106116 public List <AlignedChunkMetadata > getChunkMetadataList () {
107117 List <IChunkMetadata > timeChunkMetadata = timeseriesMetadata .getChunkMetadataList ();
108118 List <List <IChunkMetadata >> valueChunkMetadataList = new ArrayList <>();
109119 for (TimeseriesMetadata metadata : valueTimeseriesMetadataList ) {
110120 valueChunkMetadataList .add (metadata == null ? null : metadata .getChunkMetadataList ());
111121 }
112122
123+ return getAlignedChunkMetadata (timeChunkMetadata , valueChunkMetadataList );
124+ }
125+
126+ private List <AlignedChunkMetadata > getAlignedChunkMetadata (
127+ List <IChunkMetadata > timeChunkMetadata , List <List <IChunkMetadata >> valueChunkMetadataList ) {
113128 List <AlignedChunkMetadata > res = new ArrayList <>();
114129 for (int i = 0 ; i < timeChunkMetadata .size (); i ++) {
115130 List <IChunkMetadata > chunkMetadataList = new ArrayList <>();
Original file line number Diff line number Diff line change @@ -103,6 +103,24 @@ public ChunkMetadata(
103103 this .statistics = statistics ;
104104 }
105105
106+ // won't clone deleteIntervalList & modified
107+ public ChunkMetadata (ChunkMetadata other ) {
108+ this .measurementUid = other .measurementUid ;
109+ this .offsetOfChunkHeader = other .offsetOfChunkHeader ;
110+ this .tsDataType = other .tsDataType ;
111+ this .version = other .version ;
112+ this .chunkLoader = other .chunkLoader ;
113+ this .statistics = other .statistics ;
114+ this .isFromOldTsFile = other .isFromOldTsFile ;
115+ this .ramSize = other .ramSize ;
116+ this .isSeq = other .isSeq ;
117+ this .isClosed = other .isClosed ;
118+ this .filePath = other .filePath ;
119+ this .mask = other .mask ;
120+ this .tsFilePrefixPath = other .tsFilePrefixPath ;
121+ this .compactionVersion = other .compactionVersion ;
122+ }
123+
106124 @ Override
107125 public String toString () {
108126 return String .format (
Original file line number Diff line number Diff line change 3333import java .util .ArrayList ;
3434import java .util .List ;
3535import java .util .Set ;
36+ import java .util .stream .Collectors ;
3637
3738public class TimeseriesMetadata implements ITimeSeriesMetadata {
3839
@@ -245,6 +246,12 @@ public List<IChunkMetadata> getChunkMetadataList() {
245246 return chunkMetadataList ;
246247 }
247248
249+ public List <IChunkMetadata > getCopiedChunkMetadataList () {
250+ return chunkMetadataList .stream ()
251+ .map (chunkMetadata -> new ChunkMetadata ((ChunkMetadata ) chunkMetadata ))
252+ .collect (Collectors .toList ());
253+ }
254+
248255 @ Override
249256 public boolean isModified () {
250257 return modified ;
You can’t perform that action at this time.
0 commit comments