Isso ocorre porque cada nova permissão estende o
nspacl
coluna do pg_namespace
entrada para este esquema. Agora os blocos de tabela no PostgreSQL têm um tamanho de 8kB, e cada linha da tabela tem que caber em um bloco, daí o limite.
Em tabelas normais isso não seria um problema, porque o PostgreSQL armazena campos superdimensionados de comprimento variável “fora de linha” nos chamados BRINDE mesas. Mas não há tabelas TOAST para catálogos do sistema, portanto, essa rota de fuga está fechada.
Eu diria que você está atingindo esse limite por causa de um design ruim. Em vez de conceder a cada uma das funções acesso ao esquema individualmente, use uma hierarquia de funções, atribua suas várias funções a grupos e conceda permissões de esquema no nível do grupo.