diff --git a/promql/ast.go b/promql/ast.go
index dba38db3bd..b427f5ee0f 100644
--- a/promql/ast.go
+++ b/promql/ast.go
@@ -260,6 +260,11 @@ func Walk(v Visitor, node Node, path []Node) error {
 			}
 		}
 	case *AggregateExpr:
+		if n.Param != nil {
+			if err := Walk(v, n.Param, path); err != nil {
+				return err
+			}
+		}
 		if err := Walk(v, n.Expr, path); err != nil {
 			return err
 		}
diff --git a/promql/engine.go b/promql/engine.go
index 7450dcd389..c0ab02b078 100644
--- a/promql/engine.go
+++ b/promql/engine.go
@@ -614,7 +614,7 @@ func extractFuncFromPath(p []Node) string {
 	return extractFuncFromPath(p[:len(p)-1])
 }
 
-func checkForSeriesSetExpansion(ctx context.Context, expr Expr) error {
+func checkForSeriesSetExpansion(ctx context.Context, expr Expr) {
 	switch e := expr.(type) {
 	case *MatrixSelector:
 		if e.series == nil {
@@ -635,7 +635,6 @@ func checkForSeriesSetExpansion(ctx context.Context, expr Expr) error {
 			}
 		}
 	}
-	return nil
 }
 
 func expandSeriesSet(ctx context.Context, it storage.SeriesSet) (res []storage.Series, err error) {
@@ -966,9 +965,7 @@ func (ev *evaluator) eval(expr Expr) Value {
 		}
 
 		sel := e.Args[matrixArgIndex].(*MatrixSelector)
-		if err := checkForSeriesSetExpansion(ev.ctx, sel); err != nil {
-			ev.error(err)
-		}
+		checkForSeriesSetExpansion(ev.ctx, sel)
 		mat := make(Matrix, 0, len(sel.series)) // Output matrix.
 		offset := durationMilliseconds(sel.Offset)
 		selRange := durationMilliseconds(sel.Range)
@@ -1100,9 +1097,7 @@ func (ev *evaluator) eval(expr Expr) Value {
 		})
 
 	case *VectorSelector:
-		if err := checkForSeriesSetExpansion(ev.ctx, e); err != nil {
-			ev.error(err)
-		}
+		checkForSeriesSetExpansion(ev.ctx, e)
 		mat := make(Matrix, 0, len(e.series))
 		it := storage.NewBuffer(durationMilliseconds(LookbackDelta))
 		for i, s := range e.series {
@@ -1175,9 +1170,7 @@ func durationToInt64Millis(d time.Duration) int64 {
 
 // vectorSelector evaluates a *VectorSelector expression.
 func (ev *evaluator) vectorSelector(node *VectorSelector, ts int64) Vector {
-	if err := checkForSeriesSetExpansion(ev.ctx, node); err != nil {
-		ev.error(err)
-	}
+	checkForSeriesSetExpansion(ev.ctx, node)
 
 	var (
 		vec = make(Vector, 0, len(node.series))
@@ -1249,9 +1242,7 @@ func putPointSlice(p []Point) {
 
 // matrixSelector evaluates a *MatrixSelector expression.
 func (ev *evaluator) matrixSelector(node *MatrixSelector) Matrix {
-	if err := checkForSeriesSetExpansion(ev.ctx, node); err != nil {
-		ev.error(err)
-	}
+	checkForSeriesSetExpansion(ev.ctx, node)
 
 	var (
 		offset = durationMilliseconds(node.Offset)
diff --git a/promql/testdata/aggregators.test b/promql/testdata/aggregators.test
index 8f6e047120..0da8057612 100644
--- a/promql/testdata/aggregators.test
+++ b/promql/testdata/aggregators.test
@@ -153,6 +153,7 @@ load 5m
 	http_requests{job="app-server", instance="1", group="production"}	0+60x10
 	http_requests{job="app-server", instance="0", group="canary"}		0+70x10
 	http_requests{job="app-server", instance="1", group="canary"}		0+80x10
+	foo 3+0x10
 
 eval_ordered instant at 50m topk(3, http_requests)
 	http_requests{group="canary", instance="1", job="app-server"} 800
@@ -207,6 +208,12 @@ eval_ordered instant at 50m topk(9999999999, http_requests{job="api-server",grou
 	http_requests{job="api-server", instance="0", group="production"}	100
 	http_requests{job="api-server", instance="2", group="production"}	NaN
 
+# Bug #5276.
+eval_ordered instant at 50m topk(scalar(foo), http_requests)
+	http_requests{group="canary", instance="1", job="app-server"} 800
+	http_requests{group="canary", instance="0", job="app-server"} 700
+	http_requests{group="production", instance="1", job="app-server"} 600
+
 clear
 
 # Tests for count_values.
@@ -257,8 +264,15 @@ load 10s
 	data{test="uneven samples",point="a"} 0
 	data{test="uneven samples",point="b"} 1
 	data{test="uneven samples",point="c"} 4
+	foo .8
 
 eval instant at 1m quantile without(point)(0.8, data)
 	{test="two samples"} 0.8
 	{test="three samples"} 1.6
 	{test="uneven samples"} 2.8
+
+# Bug #5276.
+eval instant at 1m quantile without(point)(scalar(foo), data)
+	{test="two samples"} 0.8
+	{test="three samples"} 1.6
+	{test="uneven samples"} 2.8