That would create N views (not counting the sub-views).
It doesn't create temporary tables anymore:
my $set = DateTime::Event::Recurrence->monthly( days => [ 10, 20 ], hours => 7 )-> union( DateTime::Event::Recurrence->monthly( days => [ 9 ], hours => 8 ) );
generates:
CREATE VIEW SET ( N ) AS ( SELECT ( N + INTERVAL '7 HOUR' ) FROM ( SELECT ( N + INTERVAL '10 DAY' ) FROM MONTHS UNION SELECT ( N + INTERVAL '20 DAY' ) FROM MONTHS ) ) UNION ( SELECT ( N + INTERVAL '8 HOUR' ) FROM ( SELECT ( N + INTERVAL '9 DAY' ) FROM MONTHS ) ) ;
This SQL fails with "subquery in FROM must have an alias", but that's fixable.
- Flavio S. Glock