java-topology/defects/cockroach/patch/cockroach-0003-ensure-roles-quadratic.patch

21 lines
844 B
Diff

# UNDF: UNDF-2026-000000755
# UNDF:
--- a/pkg/sql/authorization.go
+++ b/pkg/sql/authorization.go
@@ -564,10 +564,14 @@ func EnsureUserOnlyBelongsToRoles(
// Compute the differences between the current roles and the desired roles
// to determine which roles need to granted or revoked.
rolesToRevoke := make([]username.SQLUsername, 0, len(currentRoles))
rolesToGrant := make([]username.SQLUsername, 0, len(roles))
+ // Build a set for O(1) membership tests instead of O(D) slices.Contains.
+ desiredSet := make(map[username.SQLUsername]struct{}, len(roles))
+ for _, r := range roles {
+ desiredSet[r] = struct{}{}
+ }
for role := range currentRoles {
- if !slices.Contains(roles, role) {
+ if _, ok := desiredSet[role]; !ok {
rolesToRevoke = append(rolesToRevoke, role)
}
}
for _, role := range roles {