Hi all,

I'm working on a database that will have a very large number of users, and I'm 
running in to a problem: when I grant more than about 2500 users access to a 
schema, I get

my_db=# grant usage on schema my_schema to some_user;
ERROR:  row is too big: size 8168, maximum size 8164

This of course makes access control tricky on high user-count setups.

On IRC, linuxpoet and andres suggested that the problem is that the nspacl 
column in pg_catalog.pg_namespace grows too large. A suggested fix by linuxpoet 
adds a toast table to pg_namespace. A potentially dangerous work-around 
suggested by andres is to alter the pg_namespace table while temporarily having 
allow_system_table_mods on. That seems to have made the symptom go away for me, 
but I'm not sure of what consequences the change had. Spontaneously, it seems 
to me that ACL entries could be stored as rows in a table instead of as 
elements in an array, but I'm definitely not qualified to comment on PostgreSQL 
implementation issues.

Do you agree with linuxpoet's fix? If so, when do you think it is reasonable to 
include it?

Best Regards
Magnus Reftel
-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to