Querying para uma 'execução' de colunas consecutivas no Postgres

Tenho uma mesa:

create table table1 (event_id integer, event_time timestamp without time zone);
insert into table1 (event_id, event_time) values
(1, '2011-01-01 00:00:00'),
(2, '2011-01-01 00:00:15'),
(3, '2011-01-01 00:00:29'),
(4, '2011-01-01 00:00:58'),
(5, '2011-01-02 06:03:00'),
(6, '2011-01-02 06:03:09'),
(7, '2011-01-05 11:01:31'),
(8, '2011-01-05 11:02:15'),
(9, '2011-01-06 09:34:19'),
(10, '2011-01-06 09:34:41'),
(11, '2011-01-06 09:35:06');

Gostaria de construir uma declaração que, dado um evento, possa retornar a duração da 'execução' de eventos começando com esse evento. Uma execução é definida por:

Dois eventos são executados juntos se estiverem a 30 segundos um do outrSe A e B estão em uma corrida juntos, e B e C estão em uma corrida juntos, então A está em uma corrida com C.

No entanto, minha consulta não precisa retroceder no tempo; portanto, se eu selecionar o evento 2, apenas os eventos 2, 3 e 4 deverão ser contados como parte da execução dos eventos iniciados com 2 e 3, que serão retornados como a duração da corrid

Alguma ideia? Estou perplexo

questionAnswers(3)

yourAnswerToTheQuestion