rego: aggregate ResultSet

Fixes #3281.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
This commit is contained in:
Stephan Renatus
2021-03-16 14:06:51 +01:00
committed by Torin Sandall
parent bdb3d0f658
commit 99c81cab7c
2 changed files with 9 additions and 19 deletions
+8 -18
View File
@@ -1924,36 +1924,26 @@ func (r *Rego) evalWasm(ctx context.Context, ectx *EvalContext) (ResultSet, erro
return nil, nil
}
qr := topdown.QueryResult{}
var rs ResultSet
err = resultSet.Iter(func(term *ast.Term) error {
obj, ok := term.Value.(ast.Object)
if !ok {
return fmt.Errorf("illegal result type")
}
qr := topdown.QueryResult{}
obj.Foreach(func(k, v *ast.Term) {
kvt := ast.VarTerm(string(k.Value.(ast.String)))
qr[kvt.Value.(ast.Var)] = v
})
result, err := r.generateResult(qr, ectx)
if err != nil {
return err
}
rs = append(rs, result)
return nil
})
if err != nil {
return nil, err
}
res, err := r.generateResult(qr, ectx)
if err != nil {
return nil, err
}
rs := ResultSet{res}
if len(rs) == 0 {
return nil, nil
}
return rs, nil
return rs, err
}
func (r *Rego) generateResult(qr topdown.QueryResult, ectx *EvalContext) (Result, error) {
+1 -1
View File
@@ -56,7 +56,7 @@ func TestPrepareAndEvalWithWasmTarget(t *testing.T) {
t.Fatalf("Unexpected error: %s", err)
}
assertPreparedEvalQueryEval(t, pq, []EvalOption{}, "[[true, true]]")
assertPreparedEvalQueryEval(t, pq, []EvalOption{}, "[[true, true],[true, true]]")
pq, err = New(
Query("foo(100)"),