-- -- apm_package__is_child/2 -- create or replace function apm_package__is_child( character varying, character varying ) returns bool as $$ declare parent_package_key alias for $1; child_package_key alias for $2; dependency record; begin if parent_package_key = child_package_key then return 't'; end if; for dependency in select apd.service_uri from apm_package_versions apv, apm_package_dependencies apd where apd.version_id = apv.version_id and apv.enabled_p and apd.dependency_type in ('embeds', 'extends') and apv.package_key = child_package_key loop if dependency.service_uri = parent_package_key or apm_package__is_child(parent_package_key, dependency.service_uri) then return 't'; end if; end loop; return 'f'; end;$$ language plpgsql;