I used to use a different approach:

1. Create auth() pl/python procedure as follows:

create or replace
function auth(auser_id integer) returns void as $$
    GD['user_id'] = auser_id
$$ language plpythonu;

This procedure is supposed to be called after a sucesseful authorisation (in a 
database or on application side).

2. Create get_current_user() procedure:

create or replace
function get_current_user() returns integer as $$
    return GD.get('user_id')
$$ language plpythonu stable security definer;

Now you can get current user id from every SQL query or stored procedure. It 
works fast because Python shared array GD is always present in memory.

> On 11. Mar 2020, at 15:46, Michael Lewis <mle...@entrata.com> wrote:
> 
> On Fri, Sep 20, 2019 at 8:19 AM Tom Lane <t...@sss.pgh.pa.us 
> <mailto:t...@sss.pgh.pa.us>> wrote:
> There is a restriction on how many distinct GRANTs you can
> issue against any one object --- performance will get bad if the ACL
> list gets too large.
> 
> 
> Any ballpark numbers here? Are we talking 50 or 8000?

Reply via email to