Re: [GENERAL] Recurring and non recurring events.

2016-01-19 Thread Bruce Momjian
On Sat, Dec 26, 2015 at 03:15:50PM -0500, Tom Lane wrote:
> Gavin Flower  writes:
> > The motivation of bottom posting like this: is that people get to see 
> > the context before the reply, AND emails don't end up getting longer & 
> > longer as people reply at the beginning forgetting to trim the now 
> > irrelevant stuff at the end.
> 
> Of course, this also requires that people have the discipline to trim
> as much as possible of what they're quoting.  Otherwise, not only do
> the messages get longer and longer anyway, but you have to scroll to the
> bottom to find what's new.
> 
> The general rule for proper email quoting is to quote just enough to
> remind readers what the context is.  You are not trying to create a
> complete archive of the whole thread in every message; we have email
> archives for that.
> 
> And the reason why this is worth doing is that it shows respect for
> your readers' time.  I'm not sure how many people look at each message
> in a popular list like pgsql-general, but surely it's measured in the
> thousands.  If you spend a few minutes judiciously cutting quotes and
> interspersing your responses in a logical fashion, that may save each
> reader only a few seconds in reading/understanding your message, but
> that's still a large net savings of time.

Jumping in late here, but I am getting concerned that most web and
mobile email readers make it difficult to inline quote stuff.  Trimming
text is particularly hard on mobile devices.  As more people use
web-based or mobile email clients, will the "nice" type of email
formatting become rarer and rarer?

-- 
  Bruce Momjian  http://momjian.us
  EnterpriseDB http://enterprisedb.com

+ As you are, so once was I. As I am, so you will be. +
+ Roman grave inscription +


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Recurring and non recurring events.

2015-12-27 Thread Alban Hertroys

> On 26 Dec 2015, at 13:03, Kevin Waterson  wrote:
> 
> Thanks, as I am new to postgres, I was unaware of this function.

Actually, the article you referenced makes use of generate_series as well (at 
INSERT INTO events), but then for some reason decides to create a 
generate_recurrences function later on. Possibly the choice came from them 
using a domain (RECURRENCE) that did not translate directly (although almost) 
to an interval.

> To go with this, I guess I will need a table with which to store intervals, 
> start and end dates?
> 
> eg
> CREATE table events(
> id serial primary key,
> start_timestamp timestamp,
> end_timestamp timestamp,
> interval 
> 
> with dateRange as
>   (
>   SELECT min(start_timestamp) as first_date, max(start_timestamp) as last_date
>   FROM events
>   )
> select 
> generate_series(first_date, last_date, '1 hour'::interval)::timestamp as 
> date_hour
> from dateRange;

But, instead of generate_series you could also use a recursive CTE (which is 
more or less standard SQL - implementations differ slightly between databases):

with recursive dateRange (curr_stamp, max_stamp, step) as (
select min(start_timestamp), max(start_timestamp), interval '1 week'
  from events
union all
select curr_stamp + step, max_stamp, step
  from dateRange
 where curr_stamp + step <= max_stamp
)
select curr_stamp from dateRange;

I suspect generate_series is faster, but since your query already almost looked 
like this I thought I'd offer this alternative approach. It has a little bit 
more flexibility too, as you can add fields and calculations to the CTE quite 
easily.

Alban Hertroys
--
If you can't see the forest for the trees,
cut the trees and you'll find there is no forest.



-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Recurring and non recurring events.

2015-12-26 Thread Tom Lane
Gavin Flower  writes:
> The motivation of bottom posting like this: is that people get to see 
> the context before the reply, AND emails don't end up getting longer & 
> longer as people reply at the beginning forgetting to trim the now 
> irrelevant stuff at the end.

Of course, this also requires that people have the discipline to trim
as much as possible of what they're quoting.  Otherwise, not only do
the messages get longer and longer anyway, but you have to scroll to the
bottom to find what's new.

The general rule for proper email quoting is to quote just enough to
remind readers what the context is.  You are not trying to create a
complete archive of the whole thread in every message; we have email
archives for that.

And the reason why this is worth doing is that it shows respect for
your readers' time.  I'm not sure how many people look at each message
in a popular list like pgsql-general, but surely it's measured in the
thousands.  If you spend a few minutes judiciously cutting quotes and
interspersing your responses in a logical fashion, that may save each
reader only a few seconds in reading/understanding your message, but
that's still a large net savings of time.

regards, tom lane


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Recurring and non recurring events.

2015-12-26 Thread Gavin Flower

Pleas don't top post - see comment at the bottom of this email.

On 27/12/15 01:03, Kevin Waterson wrote:

Thanks, as I am new to postgres, I was unaware of this function.
To go with this, I guess I will need a table with which to store 
intervals, start and end dates?


eg
CREATE table events(
id serial primary key,
start_timestamp timestamp,
end_timestamp timestamp,
interval

with dateRange as
  (
  SELECT min(start_timestamp) as first_date, max(start_timestamp) as 
last_date

  FROM events
  )
select
generate_series(first_date, last_date, '1 
hour'::interval)::timestamp as date_hour

from dateRange;


or something??

Kind regards
Kevin


On Sat, Dec 26, 2015 at 7:22 PM, Pavel Stehule 
mailto:pavel.steh...@gmail.com>> wrote:


Hi

2015-12-26 8:28 GMT+01:00 Kevin Waterson mailto:kevin.water...@gmail.com>>:

I wish to set up a table of recurring, and non-recurring events.
I have been looking at

http://justatheory.com/computers/databases/postgresql/recurring_events.html
which looks nice (complex but nice) and wonder if there was a
better option for this in more recent pgsql versions.



[...]

In this list, the convention is to post replies at the end (with some 
rare exceptions), or interspersed when appropriate, and to omit parts no 
longer relevant.


The motivation of bottom posting like this: is that people get to see 
the context before the reply, AND emails don't end up getting longer & 
longer as people reply at the beginning forgetting to trim the now 
irrelevant stuff at the end.



Cheers,
Gavin



--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Recurring and non recurring events.

2015-12-26 Thread Bruno Wolff III

On Sat, Dec 26, 2015 at 23:03:30 +1100,
 Kevin Waterson  wrote:

Thanks, as I am new to postgres, I was unaware of this function.
To go with this, I guess I will need a table with which to store intervals,
start and end dates?


There is are built in range types that might be more efficiebt for 
indexing rather than using separate start and stop times. See: 
http://www.postgresql.org/docs/9.5/static/rangetypes.html#RANGETYPES-BUILTIN



--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Recurring and non recurring events.

2015-12-26 Thread Kevin Waterson
Thanks, as I am new to postgres, I was unaware of this function.
To go with this, I guess I will need a table with which to store intervals,
start and end dates?

eg
CREATE table events(
id serial primary key,
start_timestamp timestamp,
end_timestamp timestamp,
interval

with dateRange as
  (
  SELECT min(start_timestamp) as first_date, max(start_timestamp) as
last_date
  FROM events
  )
select
generate_series(first_date, last_date, '1 hour'::interval)::timestamp
as date_hour
from dateRange;


or something??

Kind regards
Kevin


On Sat, Dec 26, 2015 at 7:22 PM, Pavel Stehule 
wrote:

> Hi
>
> 2015-12-26 8:28 GMT+01:00 Kevin Waterson :
>
>> I wish to set up a table of recurring, and non-recurring events.
>> I have been looking at
>> http://justatheory.com/computers/databases/postgresql/recurring_events.html
>> which looks nice (complex but nice) and wonder if there was a better
>> option for this in more recent pgsql versions.
>>
>> All pointers gratefully received.
>>
>
> use generate_series
>
>  postgres=# select v::date from generate_series(current_date, current_date
> + 100, interval '7days') g(v);
> ┌┐
> │ v  │
> ╞╡
> │ 2015-12-26 │
> │ 2016-01-02 │
> │ 2016-01-09 │
> │ 2016-01-16 │
> │ 2016-01-23 │
> │ 2016-01-30 │
> │ 2016-02-06 │
> │ 2016-02-13 │
> │ 2016-02-20 │
> │ 2016-02-27 │
> │ 2016-03-05 │
> │ 2016-03-12 │
> │ 2016-03-19 │
> │ 2016-03-26 │
> │ 2016-04-02 │
> └┘
> (15 rows)
>
>
>> Kev
>>
>
>


-- 
-- 
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."


Re: [GENERAL] Recurring and non recurring events.

2015-12-26 Thread Pavel Stehule
Hi

2015-12-26 8:28 GMT+01:00 Kevin Waterson :

> I wish to set up a table of recurring, and non-recurring events.
> I have been looking at
> http://justatheory.com/computers/databases/postgresql/recurring_events.html
> which looks nice (complex but nice) and wonder if there was a better
> option for this in more recent pgsql versions.
>
> All pointers gratefully received.
>

use generate_series

 postgres=# select v::date from generate_series(current_date, current_date
+ 100, interval '7days') g(v);
┌┐
│ v  │
╞╡
│ 2015-12-26 │
│ 2016-01-02 │
│ 2016-01-09 │
│ 2016-01-16 │
│ 2016-01-23 │
│ 2016-01-30 │
│ 2016-02-06 │
│ 2016-02-13 │
│ 2016-02-20 │
│ 2016-02-27 │
│ 2016-03-05 │
│ 2016-03-12 │
│ 2016-03-19 │
│ 2016-03-26 │
│ 2016-04-02 │
└┘
(15 rows)


> Kev
>


[GENERAL] Recurring and non recurring events.

2015-12-25 Thread Kevin Waterson
I wish to set up a table of recurring, and non-recurring events.
I have been looking at
http://justatheory.com/computers/databases/postgresql/recurring_events.html
which looks nice (complex but nice) and wonder if there was a better option
for this in more recent pgsql versions.

All pointers gratefully received.

Kev