From d67f709b8a721f92886282698fb83e811b53293d Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Thu, 18 May 2023 17:16:06 +0530 Subject: [PATCH] fix: add validations for aggregates on logs/traces datasource (#2709) --- .../app/traces/v3/query_builder_test.go | 15 +++++++++++++++ pkg/query-service/model/v3/v3.go | 18 +++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/pkg/query-service/app/traces/v3/query_builder_test.go b/pkg/query-service/app/traces/v3/query_builder_test.go index 4fd404e624..9cda548b9e 100644 --- a/pkg/query-service/app/traces/v3/query_builder_test.go +++ b/pkg/query-service/app/traces/v3/query_builder_test.go @@ -374,6 +374,21 @@ var testBuildTracesQueryData = []struct { " from signoz_traces.distributed_signoz_index_v2 where (timestamp >= '1680066360726210000' AND timestamp <= '1680066458000000000')" + " group by ts order by ts", }, + { + Name: "Test aggregate rate without aggregate attribute", + Start: 1680066360726210000, + End: 1680066458000000000, + Step: 60, + BuilderQuery: &v3.BuilderQuery{ + QueryName: "A", + AggregateOperator: v3.AggregateOperatorRate, + Expression: "A", + }, + TableName: "signoz_traces.distributed_signoz_index_v2", + ExpectedQuery: "SELECT toStartOfInterval(timestamp, INTERVAL 60 SECOND) AS ts, count()/60 as value from" + + " signoz_traces.distributed_signoz_index_v2 where (timestamp >= '1680066360726210000' AND timestamp <=" + + " '1680066458000000000') group by ts order by ts", + }, { Name: "Test aggregate count on fixed column of float64 type with filter", Start: 1680066360726210000, diff --git a/pkg/query-service/model/v3/v3.go b/pkg/query-service/model/v3/v3.go index 4065fb0668..166f4c57af 100644 --- a/pkg/query-service/model/v3/v3.go +++ b/pkg/query-service/model/v3/v3.go @@ -104,10 +104,26 @@ func (a AggregateOperator) Validate() error { func (a AggregateOperator) RequireAttribute(dataSource DataSource) bool { switch dataSource { case DataSourceMetrics: + switch a { + case AggregateOperatorNoOp: + return false + default: + return true + } + case DataSourceLogs: switch a { case AggregateOperatorNoOp, AggregateOperatorCount, - AggregateOperatorCountDistinct: + AggregateOperatorRate: + return false + default: + return true + } + case DataSourceTraces: + switch a { + case AggregateOperatorNoOp, + AggregateOperatorCount, + AggregateOperatorRate: return false default: return true