--
-- timespan__new/1
--
create or replace function timespan__new(
integer
) returns int4 as $$
-- timespans.timespan_id%TYPE
declare
new__interval_id alias for $1;
begin
return timespan__new(
new__interval_id,
true
);
end;$$ language plpgsql;
--
-- timespan__new/2
--
create or replace function timespan__new(
new__interval_id integer,
new__copy_p boolean
) returns int4 as $$
-- timespans.timespan_id%TYPE
DECLARE
v_timespan_id timespans.timespan_id%TYPE;
v_interval_id time_intervals.interval_id%TYPE;
BEGIN
-- get a new id;
select nextval('timespan_sequence') into v_timespan_id from dual;
if new__copy_p
then
-- JS: Note use of overloaded function (zero offset)
v_interval_id := time_interval__copy(new__interval_id);
else
v_interval_id := new__interval_id;
end if;
insert into timespans
(timespan_id, interval_id)
values
(v_timespan_id, v_interval_id);
return v_timespan_id;
END;
$$ language plpgsql;
--
-- timespan__new/2
--
create or replace function timespan__new(
timestamp with time zone,
timestamp with time zone
) returns int4 as $$
-- timespans.timespan_id%TYPE
declare
new__start_date alias for $1; -- default null,
new__end_date alias for $2; -- default null
begin
-- JS: If we simply call timespan__new with default copy_p = true,
-- JS: there will be two new time intervals that will be created
-- JS: everytime this function is called. The first one will never be used!!!
-- JS: To fix, we use the timespan__new with copy_p parameter and
-- JS: setting copy_p to false.
return timespan__new(time_interval__new(new__start_date, new__end_date),false);
end;$$ language plpgsql;