in sg/internal/engine/rego_query.go [247:270]
func (engine *RegoEngine) executeOneQuery(
ctx context.Context,
parsedInput ast.Value,
query string,
) ([]result.Result, error) {
// NOTE: we expect the policy implementation is deterministic, which provides
// the same results for the same policy rules, input and query.
cacheKey := queryCacheKey{
compilerKey: engine.compilerKey,
parsedInput: parsedInput,
query: query,
}
if cachedResults, ok := engine.queryCache.get(cacheKey); ok {
return cachedResults, nil
}
results, err := engine.executeOneQuerySlow(ctx, parsedInput, query)
if err != nil {
return nil, err
}
engine.queryCache.set(cacheKey, results)
return results, nil
}