Dies liegt daran, dass jede neue Berechtigung den nspacl
erweitert Spalte des pg_namespace
Eintrag für dieses Schema.
Jetzt haben Tabellenblöcke in PostgreSQL eine Größe von 8kB, und jede Tabellenzeile muss in einen Block passen, daher das Limit.
In normalen Tabellen wäre das kein Problem, denn PostgreSQL speichert übergroße Felder variabler Länge „out of line“ in sogenannten TOAST Tische. Aber es gibt keine TOAST-Tabellen für Systemkataloge, also ist dieser Fluchtweg geschlossen.
Ich würde sagen, dass Sie wegen eines schlechten Designs auf diese Grenze stoßen. Anstatt jeder Rolle einzeln Zugriff auf das Schema zu gewähren, verwenden Sie eine Rollenhierarchie, weisen Sie Ihre vielen Rollen Gruppen zu und erteilen Sie Schemaberechtigungen auf Gruppenebene.