Sam Mason <sam@samason.me.uk> wrote:
>> > 8.4 has a generate_series(timestamp,timestamp,interval) which would seem
>> > to be a bit more flexible than you want.
>> Yes, I know :-). But as "generate_series(A, B, C)" can also
>> be written as "A + generate_series(0, (C - B) / C) * C" (or
>> something "flexible" like that :-)), a
> For things as complicated as timestamps I'm not sure if this is such a
> trivial transform. If you can figure out the limit then it seems easy,
> though I'm not sure how you'd do that.
What limit?
>> "generate_series(DATE, DATE)" would inter alia get rid off
>> the need to cast the result from TIMESTAMP to DATE and to
>> explicitly specify "'1 day'". Just a small, trivial enhance-
>> ment for a popular use case :-).
> Interesting, I tend to aim for maximum expressiveness not ease of
> expressiveness. It would be somewhat easy to add the above if you want
> though:
> CREATE FUNCTION generate_series(date,date)
> RETURNS SETOF date
> IMMUTABLE LANGUAGE sql AS $$
> SELECT generate_series($1::timestamp,$2::timestamp,interval '1 day')::date;
> $$;
> or I suppose you could use the integer series generation:
> SELECT $1 + generate_series(0,$2 - $1);
If I didn't know that, I would not have characterized the
feature request as "trivial".
> Hum, now I'll have to see which is "better".
> That second version seems to be slightly quicker (20 to 30%, for ranges
> from a year up to a century respectively) so you may prefer it, but the
> difference is going to be in the noise for any query I've ever used
> generate_series for.
Which of my mails made you think that I was not satisfied
with PostgreSQL's current performance?
"generate_series(DATE, DATE)" would just be syntactic sugar,
and I like sweets.
Tim