From bae86da4f7e99ce40f51613659bd5bc3d2a08227 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 25 Jan 2008 07:58:30 +1300 Subject: [PATCH] Performance fixes to freebusy and results ordering change. --- inc/freebusy-GET.php | 8 +++++--- .../regression-suite/832-freebusy.result | 20 +++++++++---------- .../regression-suite/833-freebusy.result | 20 +++++++++---------- .../regression-suite/835-freebusy.result | 18 ++++++++--------- .../regression-suite/836-freebusy.result | 18 ++++++++--------- 5 files changed, 43 insertions(+), 41 deletions(-) diff --git a/inc/freebusy-GET.php b/inc/freebusy-GET.php index 3dbcc392..9319db28 100644 --- a/inc/freebusy-GET.php +++ b/inc/freebusy-GET.php @@ -19,7 +19,6 @@ else { $finish = date( "Ymd\THis", time() + (86400 * 200) ); } - if ( isset($request->by_email) ) { $where = "WHERE caldav_data.user_no = $request->user_no "; } @@ -31,14 +30,17 @@ $where .= "AND dtstart <= '$finish'::timestamp with time zone "; $where .= "AND caldav_data.caldav_type IN ( 'VEVENT', 'VFREEBUSY' ) "; $where .= "AND (calendar_item.transp != 'TRANSPARENT' OR calendar_item.transp IS NULL) "; $where .= "AND (calendar_item.status != 'CANCELLED' OR calendar_item.status IS NULL) "; -$where .= "AND (calendar_item.class != 'PRIVATE' OR calendar_item.class IS NULL OR get_permissions($session->user_no,caldav_data.user_no) ~ 'A') "; // Must have 'all' permissions to see confidential items +if ( ! $request->AllowedTo('all') ) { + $where .= "AND (calendar_item.class != 'PRIVATE' OR calendar_item.class IS NULL) "; +} $busy = array(); $busy_tentative = array(); $sql = "SELECT caldav_data.caldav_data, calendar_item.rrule, calendar_item.transp, calendar_item.status, "; $sql .= "to_char(calendar_item.dtstart at time zone 'GMT',".iCalendar::SqlDateFormat().") AS start, "; $sql .= "to_char(calendar_item.dtend at time zone 'GMT',".iCalendar::SqlDateFormat().") AS finish "; -$sql .= "FROM caldav_data INNER JOIN calendar_item USING(user_no, dav_name) $where ORDER BY dtstart, dtend"; +$sql .= "FROM caldav_data INNER JOIN calendar_item USING(dav_id,user_no,dav_name)".$where; +if ( isset($c->strict_result_ordering) && $c->strict_result_ordering ) $sql .= " ORDER BY dav_id"; // echo $sql. "\n"; $qry = new PgQuery( $sql ); if ( $qry->Exec("freebusy",__LINE__,__FILE__) && $qry->rows > 0 ) { diff --git a/testing/tests/regression-suite/832-freebusy.result b/testing/tests/regression-suite/832-freebusy.result index efd7e369..8dd976d3 100644 --- a/testing/tests/regression-suite/832-freebusy.result +++ b/testing/tests/regression-suite/832-freebusy.result @@ -11,6 +11,7 @@ DTSTAMP:yyyymmddThhmmssZ DTSTART:yyyymmddThhmmss DTEND:yyyymmddThhmmss FREEBUSY;FBTYPE=BUSY-TENTATIVE:20061223T060000/20061223T080000 +FREEBUSY:20061101T233000/20061102T003000 FREEBUSY:20061031T210000/20061031T220000 FREEBUSY:20061102T210000/20061102T220000 FREEBUSY:20061109T210000/20061109T220000 @@ -38,14 +39,8 @@ FREEBUSY:20070405T210000/20070405T220000 FREEBUSY:20070412T210000/20070412T220000 FREEBUSY:20070419T210000/20070419T220000 FREEBUSY:20070426T210000/20070426T220000 -FREEBUSY:20061101T233000/20061102T003000 -FREEBUSY:20061202T183000/20061202T203000 -FREEBUSY:20070102T183000/20070102T203000 -FREEBUSY:20070202T183000/20070202T203000 -FREEBUSY:20070302T183000/20070302T203000 -FREEBUSY:20070402T183000/20070402T203000 -FREEBUSY:20070502T183000/20070502T203000 -FREEBUSY:20070602T183000/20070602T203000 +FREEBUSY:20061223T030000/20061223T050000 +FREEBUSY:20061223T000000/20061223T020000 FREEBUSY:20061117T030000/20061117T044500 FREEBUSY:20061201T030000/20061201T044500 FREEBUSY:20061215T030000/20061215T044500 @@ -63,7 +58,12 @@ FREEBUSY:20070518T030000/20070518T044500 FREEBUSY:20070601T030000/20070601T044500 FREEBUSY:20070615T030000/20070615T044500 FREEBUSY:20070629T030000/20070629T044500 -FREEBUSY:20061223T000000/20061223T020000 -FREEBUSY:20061223T030000/20061223T050000 +FREEBUSY:20061202T183000/20061202T203000 +FREEBUSY:20070102T183000/20070102T203000 +FREEBUSY:20070202T183000/20070202T203000 +FREEBUSY:20070302T183000/20070302T203000 +FREEBUSY:20070402T183000/20070402T203000 +FREEBUSY:20070502T183000/20070502T203000 +FREEBUSY:20070602T183000/20070602T203000 END:VFREEBUSY END:VCALENDAR diff --git a/testing/tests/regression-suite/833-freebusy.result b/testing/tests/regression-suite/833-freebusy.result index efd7e369..8dd976d3 100644 --- a/testing/tests/regression-suite/833-freebusy.result +++ b/testing/tests/regression-suite/833-freebusy.result @@ -11,6 +11,7 @@ DTSTAMP:yyyymmddThhmmssZ DTSTART:yyyymmddThhmmss DTEND:yyyymmddThhmmss FREEBUSY;FBTYPE=BUSY-TENTATIVE:20061223T060000/20061223T080000 +FREEBUSY:20061101T233000/20061102T003000 FREEBUSY:20061031T210000/20061031T220000 FREEBUSY:20061102T210000/20061102T220000 FREEBUSY:20061109T210000/20061109T220000 @@ -38,14 +39,8 @@ FREEBUSY:20070405T210000/20070405T220000 FREEBUSY:20070412T210000/20070412T220000 FREEBUSY:20070419T210000/20070419T220000 FREEBUSY:20070426T210000/20070426T220000 -FREEBUSY:20061101T233000/20061102T003000 -FREEBUSY:20061202T183000/20061202T203000 -FREEBUSY:20070102T183000/20070102T203000 -FREEBUSY:20070202T183000/20070202T203000 -FREEBUSY:20070302T183000/20070302T203000 -FREEBUSY:20070402T183000/20070402T203000 -FREEBUSY:20070502T183000/20070502T203000 -FREEBUSY:20070602T183000/20070602T203000 +FREEBUSY:20061223T030000/20061223T050000 +FREEBUSY:20061223T000000/20061223T020000 FREEBUSY:20061117T030000/20061117T044500 FREEBUSY:20061201T030000/20061201T044500 FREEBUSY:20061215T030000/20061215T044500 @@ -63,7 +58,12 @@ FREEBUSY:20070518T030000/20070518T044500 FREEBUSY:20070601T030000/20070601T044500 FREEBUSY:20070615T030000/20070615T044500 FREEBUSY:20070629T030000/20070629T044500 -FREEBUSY:20061223T000000/20061223T020000 -FREEBUSY:20061223T030000/20061223T050000 +FREEBUSY:20061202T183000/20061202T203000 +FREEBUSY:20070102T183000/20070102T203000 +FREEBUSY:20070202T183000/20070202T203000 +FREEBUSY:20070302T183000/20070302T203000 +FREEBUSY:20070402T183000/20070402T203000 +FREEBUSY:20070502T183000/20070502T203000 +FREEBUSY:20070602T183000/20070602T203000 END:VFREEBUSY END:VCALENDAR diff --git a/testing/tests/regression-suite/835-freebusy.result b/testing/tests/regression-suite/835-freebusy.result index 4f1a8472..738251ed 100644 --- a/testing/tests/regression-suite/835-freebusy.result +++ b/testing/tests/regression-suite/835-freebusy.result @@ -11,6 +11,7 @@ DTSTAMP:yyyymmddThhmmssZ DTSTART:yyyymmddThhmmss DTEND:yyyymmddThhmmss FREEBUSY;FBTYPE=BUSY-TENTATIVE:20061223T060000/20061223T080000 +FREEBUSY:20061101T233000/20061102T003000 FREEBUSY:20061031T210000/20061031T220000 FREEBUSY:20061102T210000/20061102T220000 FREEBUSY:20061109T210000/20061109T220000 @@ -38,14 +39,7 @@ FREEBUSY:20070405T210000/20070405T220000 FREEBUSY:20070412T210000/20070412T220000 FREEBUSY:20070419T210000/20070419T220000 FREEBUSY:20070426T210000/20070426T220000 -FREEBUSY:20061101T233000/20061102T003000 -FREEBUSY:20061202T183000/20061202T203000 -FREEBUSY:20070102T183000/20070102T203000 -FREEBUSY:20070202T183000/20070202T203000 -FREEBUSY:20070302T183000/20070302T203000 -FREEBUSY:20070402T183000/20070402T203000 -FREEBUSY:20070502T183000/20070502T203000 -FREEBUSY:20070602T183000/20070602T203000 +FREEBUSY:20061223T030000/20061223T050000 FREEBUSY:20061117T030000/20061117T044500 FREEBUSY:20061201T030000/20061201T044500 FREEBUSY:20061215T030000/20061215T044500 @@ -63,6 +57,12 @@ FREEBUSY:20070518T030000/20070518T044500 FREEBUSY:20070601T030000/20070601T044500 FREEBUSY:20070615T030000/20070615T044500 FREEBUSY:20070629T030000/20070629T044500 -FREEBUSY:20061223T030000/20061223T050000 +FREEBUSY:20061202T183000/20061202T203000 +FREEBUSY:20070102T183000/20070102T203000 +FREEBUSY:20070202T183000/20070202T203000 +FREEBUSY:20070302T183000/20070302T203000 +FREEBUSY:20070402T183000/20070402T203000 +FREEBUSY:20070502T183000/20070502T203000 +FREEBUSY:20070602T183000/20070602T203000 END:VFREEBUSY END:VCALENDAR diff --git a/testing/tests/regression-suite/836-freebusy.result b/testing/tests/regression-suite/836-freebusy.result index 4f1a8472..738251ed 100644 --- a/testing/tests/regression-suite/836-freebusy.result +++ b/testing/tests/regression-suite/836-freebusy.result @@ -11,6 +11,7 @@ DTSTAMP:yyyymmddThhmmssZ DTSTART:yyyymmddThhmmss DTEND:yyyymmddThhmmss FREEBUSY;FBTYPE=BUSY-TENTATIVE:20061223T060000/20061223T080000 +FREEBUSY:20061101T233000/20061102T003000 FREEBUSY:20061031T210000/20061031T220000 FREEBUSY:20061102T210000/20061102T220000 FREEBUSY:20061109T210000/20061109T220000 @@ -38,14 +39,7 @@ FREEBUSY:20070405T210000/20070405T220000 FREEBUSY:20070412T210000/20070412T220000 FREEBUSY:20070419T210000/20070419T220000 FREEBUSY:20070426T210000/20070426T220000 -FREEBUSY:20061101T233000/20061102T003000 -FREEBUSY:20061202T183000/20061202T203000 -FREEBUSY:20070102T183000/20070102T203000 -FREEBUSY:20070202T183000/20070202T203000 -FREEBUSY:20070302T183000/20070302T203000 -FREEBUSY:20070402T183000/20070402T203000 -FREEBUSY:20070502T183000/20070502T203000 -FREEBUSY:20070602T183000/20070602T203000 +FREEBUSY:20061223T030000/20061223T050000 FREEBUSY:20061117T030000/20061117T044500 FREEBUSY:20061201T030000/20061201T044500 FREEBUSY:20061215T030000/20061215T044500 @@ -63,6 +57,12 @@ FREEBUSY:20070518T030000/20070518T044500 FREEBUSY:20070601T030000/20070601T044500 FREEBUSY:20070615T030000/20070615T044500 FREEBUSY:20070629T030000/20070629T044500 -FREEBUSY:20061223T030000/20061223T050000 +FREEBUSY:20061202T183000/20061202T203000 +FREEBUSY:20070102T183000/20070102T203000 +FREEBUSY:20070202T183000/20070202T203000 +FREEBUSY:20070302T183000/20070302T203000 +FREEBUSY:20070402T183000/20070402T203000 +FREEBUSY:20070502T183000/20070502T203000 +FREEBUSY:20070602T183000/20070602T203000 END:VFREEBUSY END:VCALENDAR