[v10.1.x] Search v1: Remove unnecessary subqueries (#72710)

Search v1: Remove unnecessary subqueries (#72388)

* Add feature flag

* Introduce interface and dummy implementation

* Add tests for the new filter

* accessControlDashboardPermissionFilterNoFolderSubquery implementation

* join only if it's necessary

* force ordering for tests

* Temporarily enable new query for benchmarks

(cherry picked from commit 2c26a02b82)

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
This commit is contained in:
grafana-delivery-bot[bot]
2023-08-03 11:12:14 +03:00
committed by GitHub
parent d7a65cb7ca
commit 5769d0be49
15 changed files with 516 additions and 157 deletions
+7
View File
@@ -20,6 +20,7 @@ type SQLBuilder struct {
features featuremgmt.FeatureToggles
sql bytes.Buffer
params []interface{}
leftJoin string
recQry string
recQryParams []interface{}
recursiveQueriesAreSupported bool
@@ -43,6 +44,9 @@ func (sb *SQLBuilder) GetSQLString() string {
var bf bytes.Buffer
bf.WriteString(sb.recQry)
bf.WriteString(sb.sql.String())
if sb.leftJoin != "" {
bf.WriteString(" LEFT OUTER JOIN " + sb.leftJoin)
}
return bf.String()
}
@@ -65,9 +69,11 @@ func (sb *SQLBuilder) WriteDashboardPermissionFilter(user *user.SignedInUser, pe
params []interface{}
recQry string
recQryParams []interface{}
leftJoin string
)
filterRBAC := permissions.NewAccessControlDashboardPermissionFilter(user, permission, queryType, sb.features, sb.recursiveQueriesAreSupported)
leftJoin = filterRBAC.LeftJoin()
sql, params = filterRBAC.Where()
recQry, recQryParams = filterRBAC.With()
@@ -75,4 +81,5 @@ func (sb *SQLBuilder) WriteDashboardPermissionFilter(user *user.SignedInUser, pe
sb.params = append(sb.params, params...)
sb.recQry = recQry
sb.recQryParams = recQryParams
sb.leftJoin = leftJoin
}