Thread: pg_group system table

pg_group system table

From
Gordon Clarke
Date:
The pgsql doco mentions that there is no create group command, at least in
v6.5.2. Further, that one needs to insert directly into the system table
pg_group which is fine. 

So I retrieved the user id's I needed from pg_user and made the following
insert.

insert into pg_group(groname, grosysid, grolist) values('dba',50,'{102,101,100}');

Now I want to determine which group(s) a certain user is in. So I tried.

select groname from pg_group pg
where pg.grolist{} = 101;

Which doesn't work, nor does..

select groname from pg_group pg
where pg.grolist[] = 101;

As well as many other combinations I tried. Too many to list and I'm
obviously on the wrong path.

However, provided I know where that user id is in the list ie. second, the
query works. This is not what I want because I'm not necessarily going to
know where that user id is in the list. So how do I write the query in a
general way given just the user id and not its position?

A way around is to make 3 entries for the above insert and therefore the
user id will always be the first and only item in the list, but I don't
want to have to resort to that.

Cheers...Gordon
~~~~~~~~~~~~~~ 4ZzZ Brisbane's First Community FM Station ~~~~~~~~~~~~~~        The Demo Show - Supporting Australian
UnsignedArtists           Mon nights 6-7pm (0800-0900UTC) on 4ZzZ 102.1 FM                 http://www.4zzzfm.org.au/zed
(RAfeed)
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~