-- -- rel_segment__get_or_new/2 -- create or replace function rel_segment__get_or_new( integer, character varying ) returns int4 as $$ declare gid alias for $1; typ alias for $2; begin return rel_segment__get_or_new(gid,typ,null); end;$$ language plpgsql; -- -- rel_segment__get_or_new/3 -- create or replace function rel_segment__get_or_new( integer, character varying, character varying ) returns int4 as $$ declare get_or_new__group_id alias for $1; get_or_new__rel_type alias for $2; segment_name alias for $3; -- default null v_segment_id rel_segments.segment_id%TYPE; v_segment_name rel_segments.segment_name%TYPE; begin v_segment_id := rel_segment__get(get_or_new__group_id,get_or_new__rel_type); if v_segment_id is null then if segment_name is not null then v_segment_name := segment_name; else select groups.group_name || ' - ' || acs_object_types.pretty_name || ' segment' into v_segment_name from groups, acs_object_types where groups.group_id = get_or_new__group_id and acs_object_types.object_type = get_or_new__rel_type; end if; v_segment_id := rel_segment__new ( null, 'rel_segment', now(), null, null, null, null, v_segment_name, get_or_new__group_id, get_or_new__rel_type, get_or_new__group_id ); end if; return v_segment_id; end;$$ language plpgsql;