@@ -38,21 +38,20 @@ type ChunkStore interface {
3838
3939// NewEngine creates a new promql.Engine for cortex.
4040func NewEngine (distributor Querier , chunkStore ChunkStore , reg prometheus.Registerer , maxConcurrent int , timeout time.Duration ) (* promql.Engine , storage.Queryable ) {
41- queryable := NewQueryable (distributor , chunkStore , false )
41+ queryable := NewQueryable (distributor , chunkStore )
4242 engine := promql .NewEngine (util .Logger , reg , maxConcurrent , timeout )
4343 return engine , queryable
4444}
4545
4646// NewQueryable creates a new Queryable for cortex.
47- func NewQueryable (distributor Querier , chunkStore ChunkStore , mo bool ) MergeQueryable {
47+ func NewQueryable (distributor Querier , chunkStore ChunkStore ) MergeQueryable {
4848 return MergeQueryable {
4949 queriers : []Querier {
5050 distributor ,
5151 & chunkQuerier {
5252 store : chunkStore ,
5353 },
5454 },
55- metadataOnly : mo ,
5655 }
5756}
5857
@@ -125,18 +124,16 @@ func mergeMatrices(matrices chan model.Matrix, errors chan error, n int) (model.
125124// A MergeQueryable is a storage.Queryable that produces a storage.Querier which merges
126125// results from multiple underlying Queriers.
127126type MergeQueryable struct {
128- queriers []Querier
129- metadataOnly bool
127+ queriers []Querier
130128}
131129
132130// Querier implements storage.Queryable.
133131func (q MergeQueryable ) Querier (ctx context.Context , mint , maxt int64 ) (storage.Querier , error ) {
134132 return mergeQuerier {
135- ctx : ctx ,
136- queriers : q .queriers ,
137- mint : mint ,
138- maxt : maxt ,
139- metadataOnly : q .metadataOnly ,
133+ ctx : ctx ,
134+ queriers : q .queriers ,
135+ mint : mint ,
136+ maxt : maxt ,
140137 }, nil
141138}
142139
@@ -205,16 +202,12 @@ type mergeQuerier struct {
205202 queriers []Querier
206203 mint int64
207204 maxt int64
208- // Whether this querier should only load series metadata in Select().
209- // Necessary for remote storage implementations of the storage.Querier
210- // interface because both metadata and bulk data loading happens via
211- // the Select() method.
212- metadataOnly bool
213205}
214206
215- func (mq mergeQuerier ) Select (_ * storage.SelectParams , matchers ... * labels.Matcher ) (storage.SeriesSet , error ) {
207+ func (mq mergeQuerier ) Select (sp * storage.SelectParams , matchers ... * labels.Matcher ) (storage.SeriesSet , error ) {
216208 // TODO: Update underlying selectors to return errors directly.
217- if mq .metadataOnly {
209+ // Kludge: Prometheus passes nil SelectParams if it is doing a 'series' operation, which needs only metadata
210+ if sp == nil {
218211 return mq .selectMetadata (matchers ... ), nil
219212 }
220213 return mq .selectSamples (matchers ... ), nil
0 commit comments