Skip to content

Commit

Permalink
rego: aggregate ResultSet
Browse files Browse the repository at this point in the history
Fixes open-policy-agent#3281.

Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
  • Loading branch information
srenatus committed Mar 16, 2021
1 parent 65afa55 commit 4afbb32
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 19 deletions.
26 changes: 8 additions & 18 deletions rego/rego.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion rego/rego_wasmtarget_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)"),
Expand Down

0 comments on commit 4afbb32

Please sign in to comment.