--
-- timespan__copy/2
--
create or replace function timespan__copy(
copy__timespan_id integer,
copy__offset_interval interval
) returns int4 as $$
DECLARE
rec_timespan record;
v_interval_id timespans.interval_id%TYPE;
v_timespan_id timespans.timespan_id%TYPE;
BEGIN
v_timespan_id := null;
-- Loop over each interval in timespan, creating a new copy
for rec_timespan in
select *
from timespans
where timespan_id = copy__timespan_id
loop
v_interval_id := time_interval__copy(
rec_timespan.interval_id,
copy__offset_interval
);
if v_timespan_id is null
then
-- JS: NOTE DEFAULT BEHAVIOR OF timespan__new
v_timespan_id := timespan__new(v_interval_id);
else
-- no copy, use whatever is generated by time_interval__copy
PERFORM timespan__join_interval(
v_timespan_id,
v_interval_id,
false);
end if;
end loop;
return v_timespan_id;
END;
$$ language plpgsql;
--
-- timespan__copy/1
--
create or replace function timespan__copy(
integer
) returns int4 as $$
-- timespans.timespan_id%TYPE
declare
copy__timespan_id alias for $1;
begin
return timespan__copy(
copy__timespan_id,
interval '0 days'
);
end;$$ language plpgsql;
--
-- timespan__copy/2
--
create or replace function timespan__copy(
integer,
integer
) returns int4 as $$
-- timespans.timespan_id%TYPE
declare
copy__timespan_id alias for $1;
copy__offset alias for $2;
begin
return timespan__copy(
copy__timespan_id,
to_interval(copy__offset,'days')
);
end;$$ language plpgsql;