@@ -50,6 +50,7 @@ type TSSPFileDetachedReader struct {
50
50
filterSeqTime int64
51
51
filterSeqId int64
52
52
filterSeqFunc func (int64 , int64 ) bool
53
+ tr util.TimeRange
53
54
54
55
metaDataQueue MetaControl
55
56
metaIndex []* MetaIndex
@@ -74,9 +75,10 @@ func NewTSSPFileDetachedReader(metaIndex []*MetaIndex, blocks [][]int, ctx *File
74
75
blocks : blocks ,
75
76
obsOpts : path .Option (),
76
77
ctx : ctx ,
77
- metaDataQueue : NewMetaControl (true , chunkMetaReadNum ),
78
+ metaDataQueue : NewMetaControl (ctx . readCtx . Ascending , chunkMetaReadNum ),
78
79
unnest : unnest ,
79
80
seqIndex : - 1 ,
81
+ tr : util.TimeRange {Min : ctx .tr .Min , Max : ctx .tr .Max },
80
82
}
81
83
if config .IsLogKeeper () && options .GetLogQueryCurrId () != "" && options .GetLimit () > 0 {
82
84
err := r .parseSeqId (options )
@@ -203,6 +205,14 @@ func (t *TSSPFileDetachedReader) GetSchema() record.Schemas {
203
205
return t .ctx .schemas
204
206
}
205
207
208
+ func (t * TSSPFileDetachedReader ) UpdateTime (time int64 ) {
209
+ if t .ctx .readCtx .Ascending {
210
+ t .tr .Max = time
211
+ } else {
212
+ t .tr .Min = time
213
+ }
214
+ }
215
+
206
216
func (t * TSSPFileDetachedReader ) Next () (* record.Record , comm.SeriesInfoIntf , error ) {
207
217
for {
208
218
if ! t .isInit {
@@ -251,9 +261,9 @@ func (t *TSSPFileDetachedReader) readBatch() (*record.Record, error) {
251
261
func (t * TSSPFileDetachedReader ) filterData (rec * record.Record ) * record.Record {
252
262
if rec != nil && (t .ctx .isOrder || t .isSort ) {
253
263
if t .ctx .readCtx .Ascending {
254
- rec = FilterByTime (rec , t .ctx . tr )
264
+ rec = FilterByTime (rec , t .tr )
255
265
} else {
256
- rec = FilterByTimeDescend (rec , t .ctx . tr )
266
+ rec = FilterByTimeDescend (rec , t .tr )
257
267
}
258
268
}
259
269
@@ -304,7 +314,10 @@ func (t *TSSPFileDetachedReader) initChunkMeta() (bool, error) {
304
314
chunkMetas := make ([]* SegmentMeta , 0 )
305
315
for len (chunkMetas ) < chunkReadNum && ! t .metaDataQueue .IsEmpty () {
306
316
s , _ := t .metaDataQueue .Pop ()
307
- chunkMetas = append (chunkMetas , s .(* SegmentMeta ))
317
+ currTr := s .(* SegmentMeta ).chunkMeta .GetTimeRangeBy (s .(* SegmentMeta ).id )
318
+ if currTr [0 ] <= t .tr .Max && currTr [1 ] >= t .tr .Min {
319
+ chunkMetas = append (chunkMetas , s .(* SegmentMeta ))
320
+ }
308
321
}
309
322
t .dataReader .InitReadBatch (chunkMetas , t .ctx .schemas )
310
323
return true , nil
0 commit comments