--
-- timespan__join/2
--
create or replace function timespan__join(
integer,
integer
) returns int4 as $$
-- time_intervals.interval_id%TYPE
declare
join__timespan_1_id alias for $1;
join__timespan_2_id alias for $2;
v_interval_id time_intervals.interval_id%TYPE;
rec_timespan record;
begin
-- Loop over intervals in 2nd timespan, join with 1st.
for rec_timespan in
select *
from timespans
where timespan_id = join__timespan_2_id
loop
v_interval_id := timespan__join_interval(
join__timespan_1_id,
rec_timespan.interval_id,
false
);
end loop;
-- JS: Return the last interval id joined. Not very useful, since there may be
-- JS: more than one interval joined
return v_interval_id;
end;$$ language plpgsql;
--
-- timespan__join/3
--
create or replace function timespan__join(
integer,
timestamp with time zone,
timestamp with time zone
) returns int4 as $$
-- time_intervals.interval_id%TYPE
declare
join__timespan_id alias for $1;
join__start_date alias for $2; -- default null,
join__end_date alias for $3; -- default null
begin
-- JS: This will create a new interval with start_date and end_date
-- JS: so we might as well return the interval id
return timespan__join_interval(
join__timespan_id,
time_interval__new(join__start_date, join__end_date),
false
);
end;$$ language plpgsql;