Serialization/Deserialization

Signed-off-by: Vanshikav123 <vanshikav928@gmail.com>
This commit is contained in:
Vanshikav123 2025-01-15 18:44:11 +05:30
parent b5c5565ddf
commit 83eb216986

View file

@ -132,6 +132,7 @@ func ToQueryResult(ss storage.SeriesSet, sampleLimit int) (*prompb.QueryResult,
var ( var (
samples []prompb.Sample samples []prompb.Sample
histograms []prompb.Histogram histograms []prompb.Histogram
exemplars []prompb.Exemplar
) )
for valType := iter.Next(); valType != chunkenc.ValNone; valType = iter.Next() { for valType := iter.Next(); valType != chunkenc.ValNone; valType = iter.Next() {
@ -164,10 +165,16 @@ func ToQueryResult(ss storage.SeriesSet, sampleLimit int) (*prompb.QueryResult,
return nil, ss.Warnings(), err return nil, ss.Warnings(), err
} }
if sse, ok := ss.(*seriesSetWithExemplars); ok {
key := series.Labels().Hash()
exemplars = sse.exemplarMap[key]
}
resp.Timeseries = append(resp.Timeseries, &prompb.TimeSeries{ resp.Timeseries = append(resp.Timeseries, &prompb.TimeSeries{
Labels: prompb.FromLabels(series.Labels(), nil), Labels: prompb.FromLabels(series.Labels(), nil),
Samples: samples, Samples: samples,
Histograms: histograms, Histograms: histograms,
Exemplars: exemplars,
}) })
} }
return resp, ss.Warnings(), ss.Err() return resp, ss.Warnings(), ss.Err()
@ -182,7 +189,7 @@ func FromQueryResult(sortSeries bool, res *prompb.QueryResult) storage.SeriesSet
return errSeriesSet{err: err} return errSeriesSet{err: err}
} }
lbls := ts.ToLabels(&b, nil) lbls := ts.ToLabels(&b, nil)
series = append(series, &concreteSeries{labels: lbls, floats: ts.Samples, histograms: ts.Histograms}) series = append(series, &concreteSeries{labels: lbls, floats: ts.Samples, histograms: ts.Histograms, exemplars: ts.Exemplars})
} }
if sortSeries { if sortSeries {
@ -368,6 +375,7 @@ type concreteSeries struct {
labels labels.Labels labels labels.Labels
floats []prompb.Sample floats []prompb.Sample
histograms []prompb.Histogram histograms []prompb.Histogram
exemplars []prompb.Exemplar
} }
func (c *concreteSeries) Labels() labels.Labels { func (c *concreteSeries) Labels() labels.Labels {