--
-- membership_rel__check_representation/1
--
create or replace function membership_rel__check_representation(
integer
) returns bool as $$
declare
check_representation__rel_id alias for $1;
group_id groups.group_id%TYPE;
member_id parties.party_id%TYPE;
result boolean;
row record;
begin
result := 't';
if acs_object__check_representation(check_representation__rel_id) = 'f' then
result := 'f';
end if;
select r.object_id_one, r.object_id_two
into group_id, member_id
from acs_rels r, membership_rels m
where r.rel_id = m.rel_id
and m.rel_id = check_representation__rel_id;
if membership_rel__check_index(group_id, member_id, group_id) = 'f' then
result := 'f';
end if;
for row in select *
from group_member_index
where rel_id = check_representation__rel_id
LOOP
if composition_rel__check_path_exists_p(row.container_id,
row.group_id) = 'f' then
result := 'f';
PERFORM acs_log__error('membership_rel.check_representation',
'Extra row in group_member_index: ' ||
'group_id = ' || row.group_id || ', ' ||
'member_id = ' || row.member_id || ', ' ||
'container_id = ' || row.container_id || '.');
end if;
end loop;
return result;
end;$$ language plpgsql;