-- -- acs_object__check_path/2 -- create or replace function acs_object__check_path( integer, integer ) returns bool as $$ declare check_path__object_id alias for $1; check_path__ancestor_id alias for $2; check_path__context_id acs_objects.context_id%TYPE; check_path__security_inherit_p acs_objects.security_inherit_p%TYPE; begin if check_path__object_id is null or check_path__ancestor_id then raise exception 'acs_object__check_path called with null object_id or ancestor_id'; end if; if check_path__object_id = check_path__ancestor_id then return 't'; end if; select context_id, security_inherit_p into check_path__context_id, check_path__security_inherit_p from acs_objects where object_id = check_path__object_id; -- we should be able to handle the case where check_path fails -- should we not? if check_path__object_id = 0 and check_path__context_id is null then return 'f'; end if; if check_path__context_id is null or check_path__security_inherit_p = 'f' then check_path__context_id := 0; end if; return acs_object__check_path(check_path__context_id, check_path__ancestor_id); end;$$ language plpgsql;