generate_series for range type

range typeと相性が良さそうなので、作ってみた。

create or replace function generate_series (int4range, int4) returns setof int4 as $$
    select generate_series( lower($1), upper($1), $2 );
$$ language sql;
select * from generate_series( int4range('[1, 10)') , 1 );
create or replace function generate_series ( tsrange, interval ) returns setof timestamp as $$
    select generate_series( lower($1), upper($1), $2 );
$$ language sql;
select * from generate_series( tsrange('[ 2012-12-01 00:00:00, 2012-12-25 00:00:00)') , '1 day' );