-- -- composition_rel__check_representation/1 -- create or replace function composition_rel__check_representation( integer ) returns bool as $$ declare check_representation__rel_id alias for $1; container_id groups.group_id%TYPE; component_id groups.group_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 object_id_one, object_id_two into container_id, component_id from acs_rels where rel_id = check_representation__rel_id; -- First let's check that the index has all the rows it should. if composition_rel__check_index(component_id, container_id) = 'f' then result := 'f'; end if; -- Now let's check that the index doesn't have any extraneous rows -- relating to this relation. for row in select * from group_component_index where rel_id = check_representation__rel_id LOOP if composition_rel__check_path_exists_p(row.component_id, row.group_id) = 'f' then result := 'f'; PERFORM acs_log__error('composition_rel.check_representation', 'Extraneous row in group_component_index: ' || 'group_id = ' || row.group_id || ', ' || 'component_id = ' || row.component_id || ', ' || 'rel_id = ' || row.rel_id || ', ' || 'container_id = ' || row.container_id || '.'); end if; end loop; return result; end;$$ language plpgsql;