From cd32cd76965f9a024e9a877e8e4c6396881ee3c6 Mon Sep 17 00:00:00 2001 From: Jacob Brinlee <66123601+jrbrinlee1@users.noreply.github.com> Date: Mon, 13 Mar 2023 12:59:38 -0500 Subject: [PATCH] handle empty avg agg (#2316) * handle empty avg agg --- sql3/planner/oppqlaggregate.go | 4 +++- sql3/test/defs/defs_aggregate.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/sql3/planner/oppqlaggregate.go b/sql3/planner/oppqlaggregate.go index 09169d6b6..20b867660 100644 --- a/sql3/planner/oppqlaggregate.go +++ b/sql3/planner/oppqlaggregate.go @@ -269,7 +269,9 @@ func (i *pqlAggregateRowIter) Next(ctx context.Context) (types.Row, error) { case *parser.DataTypeDecimal: _, isAvg := i.aggregate.(*avgPlanExpression) if isAvg { - if actualResult.DecimalVal == nil { + if actualResult.Count == 0 { + i.resultValue = nil + } else if actualResult.DecimalVal == nil { average := float64(actualResult.Val) / float64(actualResult.Count) daverage, err := pql.FromFloat64WithScale(average, int(t.Scale)) if err != nil { diff --git a/sql3/test/defs/defs_aggregate.go b/sql3/test/defs/defs_aggregate.go index f006db0ed..4b119ad4c 100644 --- a/sql3/test/defs/defs_aggregate.go +++ b/sql3/test/defs/defs_aggregate.go @@ -394,6 +394,38 @@ var avgTests = TableTest{ ), Compare: CompareExactUnordered, }, + { + SQLs: sqls( + "SELECT avg(i1) AS avg_rows FROM avg_test WHERE i1 > 100", + ), + ExpHdrs: hdrs( + hdr("avg_rows", featurebase.WireQueryField{ + Type: dax.BaseTypeDecimal + "(4)", + BaseType: dax.BaseTypeDecimal, + TypeInfo: map[string]interface{}{"scale": int64(4)}, + }), + ), + ExpRows: rows( + row(nil), + ), + Compare: CompareExactUnordered, + }, + { + SQLs: sqls( + "SELECT avg(d1) AS avg_rows FROM avg_test WHERE d1 > 100.0", + ), + ExpHdrs: hdrs( + hdr("avg_rows", featurebase.WireQueryField{ + Type: dax.BaseTypeDecimal + "(4)", + BaseType: dax.BaseTypeDecimal, + TypeInfo: map[string]interface{}{"scale": int64(4)}, + }), + ), + ExpRows: rows( + row(nil), + ), + Compare: CompareExactUnordered, + }, }, }