Ticket #614 (defect)

Opened 3 years ago

Last modified 3 years ago

More query filter work

Status: new

Reported by: douglm Assigned to: douglm
Priority: major Milestone: Bedework 3.6
Component: core Version:
Keywords: Cc:

The query

<C:calendar-query xmlns:D="DAV:"
                  xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:prop>
    <D:getetag/>
    <C:calendar-data>
      <C:comp name="VCALENDAR">
        <!-- <C:allprop/> -->
        <C:comp name="VEVENT">
          <C:prop name="UID"/>
          <C:prop name="DTSTART"/>
          <C:prop name="DTEND"/>
          <C:prop name="DURATION"/>
          <C:prop name="EXDATE"/>  <!--  breaks  -->
          <C:prop name="EXRULE"/>
          <C:prop name="RDATE"/>  <!--  breaks  -->
          <C:prop name="RRULE"/>
          <!-- <C:prop name="LOCATION"/> This breaks the query -->
          <C:prop name="SUMMARY"/>
        </C:comp>
        <C:comp name="VTIMEZONE">
        </C:comp>
      </C:comp>
    </C:calendar-data>
  </D:prop>
  <C:filter> 
    <C:comp-filter name="VCALENDAR">
      <C:comp-filter name="VEVENT">
        <C:time-range start="@NOW@"
                      end="@NEXTWEEK@"/>
      </C:comp-filter>
    </C:comp-filter>
  </C:filter>
</C:calendar-query>

fails for a number of reasons.

The location is an inner join (not a collection) so missing location causes nothing to be returned.

The exdates break it completely when absent. hibernate compains that the columns are missing (shouldn't they be null)?

In any case more than one collection per query leads to huge results. Should prescan the requested properties and if more than one collection just fetch the whole lot and post-filter what we return.

We may not e post-filtering it - do so. We already retrieve more than requested - for example we have to get access.

Change History

09/06/10 22:44:24: Modified by douglm

  • milestone changed from Bedework 3.7 to Bedework 3.6.

09/06/10 22:44:37: Modified by douglm

  • component changed from unclassified to core.