diff --git a/pkg/streamingpromql/engine_test.go b/pkg/streamingpromql/engine_test.go
index 8ad786e5896..78fd4002bcc 100644
--- a/pkg/streamingpromql/engine_test.go
+++ b/pkg/streamingpromql/engine_test.go
@@ -251,10 +251,12 @@ func TestNewInstantQuery_Strings(t *testing.T) {
 	q, err := mimirEngine.NewInstantQuery(ctx, storage, nil, expr, time.Now())
 	require.NoError(t, err)
 	mimir := q.Exec(context.Background())
+	q.Close()
 
 	q, err = prometheusEngine.NewInstantQuery(ctx, storage, nil, expr, time.Now())
 	require.NoError(t, err)
 	prometheus := q.Exec(context.Background())
+	q.Close()
 
 	testutils.RequireEqualResults(t, expr, prometheus, mimir)
 }
diff --git a/pkg/streamingpromql/query.go b/pkg/streamingpromql/query.go
index 0243e478676..bd3467b86bb 100644
--- a/pkg/streamingpromql/query.go
+++ b/pkg/streamingpromql/query.go
@@ -781,6 +781,8 @@ func (q *Query) Close() {
 		types.VectorPool.Put(v, q.memoryConsumptionTracker)
 	case promql.Scalar:
 		// Nothing to do, we already returned the slice in populateScalarFromScalarOperator.
+	case promql.String:
+		// Nothing to do as strings don't come from a pool
 	default:
 		panic(fmt.Sprintf("unknown result value type %T", q.result.Value))
 	}