Skip to content
This repository was archived by the owner on Nov 7, 2025. It is now read-only.

Commit f2feacb

Browse files
authored
Minor fixes to query response renderer (#937)
Only few very minor changes need to still be ported from #867 It's first of them.
1 parent b4be6d0 commit f2feacb

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

quesma/queryparser/pancake_json_rendering.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,9 @@ func (p *pancakeJSONRenderer) layerToJSON(remainingLayers []*pancakeModelLayer,
236236
default:
237237
metricRows = p.selectMetricRows(metric.InternalNamePrefix(), rows)
238238
}
239-
result[metric.name] = metric.queryType.TranslateSqlResponseToJson(metricRows)
239+
if metric.name != PancakeTotalCountMetricName {
240+
result[metric.name] = metric.queryType.TranslateSqlResponseToJson(metricRows)
241+
}
240242
// TODO: maybe add metadata also here? probably not needed
241243
}
242244

@@ -253,6 +255,9 @@ func (p *pancakeJSONRenderer) layerToJSON(remainingLayers []*pancakeModelLayer,
253255
if err != nil {
254256
return nil, err
255257
}
258+
if layer.nextBucketAggregation.metadata != nil {
259+
json["meta"] = layer.nextBucketAggregation.metadata
260+
}
256261
result[layer.nextBucketAggregation.name] = json
257262
return result, nil
258263
}
@@ -345,18 +350,30 @@ func (p *pancakeJSONRenderer) layerToJSON(remainingLayers []*pancakeModelLayer,
345350
return nil, fmt.Errorf("no key in bucket json, layer: %s", layer.nextBucketAggregation.name)
346351
}
347352
}
353+
var (
354+
columnNameWithKey = layer.nextBucketAggregation.InternalNameForKey(0) // TODO: need all ids, multi_terms will probably not work now
355+
found bool
356+
subAggrKey any
357+
currentBucketSubAggrRows []model.QueryResultRow
358+
)
359+
if subAggrIdx < len(subAggrRows) {
360+
subAggrKey, found = p.valueForColumn(subAggrRows[subAggrIdx], columnNameWithKey)
361+
}
348362

349-
columnNameWithKey := layer.nextBucketAggregation.InternalNameForKey(0) // TODO: need all ids, multi_terms will probably not work now
350-
subAggrKey, found := p.valueForColumn(subAggrRows[subAggrIdx], columnNameWithKey)
351363
if found && subAggrKey == key {
352-
subAggr, err := p.layerToJSON(remainingLayers[1:], subAggrRows[subAggrIdx])
353-
if err != nil {
354-
return nil, err
355-
}
356-
bucketArr[i] = util.MergeMaps(p.ctx, bucket, subAggr)
364+
currentBucketSubAggrRows = subAggrRows[subAggrIdx]
357365
subAggrIdx++
358366
} else {
359-
bucketArr[i] = bucket
367+
currentBucketSubAggrRows = []model.QueryResultRow{}
368+
}
369+
370+
subAggr, err := p.layerToJSON(remainingLayers[1:], currentBucketSubAggrRows)
371+
if err != nil {
372+
return nil, err
373+
}
374+
bucketArr[i] = util.MergeMaps(p.ctx, bucket, subAggr)
375+
if _, exists = bucketArr[i][bucket_aggregations.OriginalKeyName]; exists {
376+
delete(bucketArr[i], bucket_aggregations.OriginalKeyName)
360377
}
361378
}
362379
}
@@ -367,6 +384,7 @@ func (p *pancakeJSONRenderer) layerToJSON(remainingLayers []*pancakeModelLayer,
367384
}
368385
result[layer.nextBucketAggregation.name] = buckets
369386
}
387+
370388
return result, nil
371389
}
372390

0 commit comments

Comments
 (0)