I added the rule to take the previously mentioned subplan and make it into
a single assign for child. The change dropped 4 minutes off each child path
step that was found in the pattern mentioned. I have attached the new query
plan and the results of several modified queries to show the change in
times based on new additions to the query.

Saxon Execution time: 0m36.009s
VXQuery Execution time: 1m33.632s


On Thu, Dec 12, 2013 at 11:51 AM, Eldon Carman <[email protected]> wrote:

> After finishing the rewrite rule to merge the child path steps, I ran a
> few tests. The results of the query's and plans are attached.
>
> First I noted when the following group of operators were added to the
> plan, the time changed by 4 minutes (from 35s to 4m27s).
>
>           subplan {
>                     aggregate [$$19] <- [function-call:
> vxquery:{urn:org.apache.vxquery.operators-ext}sequence,
> Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}child,
> Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat,
> Args:[%0->$$17, {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5]
> = [1d000000ee])], {http://www.w3.org/2001/XMLSchema}intQUANT_ONE(bytes[5] = 
> [1d0000010b])]]]
>                     -- AGGREGATE  |LOCAL|
>                       unnest $$17 <- function-call:
> vxquery:{urn:org.apache.vxquery.operators-ext}iterate, Args:[%0->$$15]
>                       -- UNNEST  |LOCAL|
>                         nested tuple source
>                         -- NESTED_TUPLE_SOURCE  |LOCAL|
>                  }
>           -- SUBPLAN  |PARTITIONED|
>
> The above query plan section appears twice in the original query. If each
> takes 4 minutes that would account for most of the time. My test with the
> original query has a time of 9m16.336s.
>
> I suggest a rewrite rule that could change this plan section to a single
> assign.
>
> Does anything in this plan section stand out as being slow? Is it just the
> number of operators? The child path step function is fairly fast.
>
>
> On Tue, Dec 3, 2013 at 3:48 PM, Eldon Carman <[email protected]> wrote:
>
>> The first query (q00.xq) was executed 10 times on the 10 stations of
>> data. The data contains 6,827 files (/dataCollection) with 206,686 sensor
>> readings (/dataCollection/data) amounting to ~55 MB. The query was executed
>> 10 times to remove the overhead of starting and stoping the cluster and
>> node controllers in VXQuery.
>>
>> (: XQuery Filter Query :)
>> (: See historical data for Riverside, CA (ASN00008113) station by
>> selecting   :)
>> (: the weather readings for December 25 over the last 10 years.
>>     :)
>> let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors"
>> for $r in collection($collection)/dataCollection/data
>> let $date := xs:date(fn:substring(xs:string(fn:data($r/date)), 0, 11))
>> where $r/station eq "GHCND:ASN00008113"
>>     and fn:year-from-date($date) >= (2003)
>>     and fn:month-from-date($date) eq 12
>>     and fn:day-from-date($date) eq 25
>> return $r
>>
>> Saxon processed this query 10 times in 35.936s with an average of 3.5936s
>> per query.
>> VXQuery processed this query 10 times in 504.715s with an average
>> of 50.4715s per query.
>>
>> I ran the query again with out the date filter options. The query returns
>> all data from station GHCND:ASN00008113.
>> Saxon processed this query 10 times in 35.953s with an average of 3.5953s
>> per query.
>> VXQuery processed this query 10 times in 376.325s with an average
>> of 37.6325s per query.
>>
>> The below modified query takes an average of 4.0028s. The query basically
>> touches each sensor reading but does nothing. The select is much simpler
>> and the plan does not have two subplans for paths steps used in the select.
>>
>> let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN"
>> for $r in collection($collection)/dataCollection/data
>> where empty($r)
>> return $r
>>
>> The process seems to take a lot of time to prepare data and then execute
>> the select for the where clause.
>>
>> Notes on VXQuery performance:
>> ========================
>> The frame size was set to 1 MB.
>> The cpu is at 100% to 260% on a 8 core machine. (100% is one core is
>> being fully used)
>> The disk has sporadic activity.
>> The system has one cluster controller and one node controller set up from
>> inside the CLI script.
>>
>> Suggested Options:
>> 1. Remove the subplans for path steps going into the select.
>>     * The subplan iterates over a field created by an unnest operator.
>> The unnest operator is guaranteed to produce single value items. The
>> subplan is not required when the input is a single item that gets iterated
>> over then result aggregated back together. The process could be a simple
>> assign for the value inside the aggregate (including the rest of the nested
>> plan operators minus the unnest).
>> 2. Project unused variables out of the tuple during local execution.
>>     * Depends on how the tuples are being passes between operators. Right
>> now a lot of information is stored in the tuple (XML file, all path steps,
>> etc.). Reducing the size could help with coping less information during
>> each new path step.
>>
>> Questions?
>> * Can you track to see which operators are taking the longest?
>> * Can you explain the tuple stream and how it interacts with each
>> operator? Is there one stream? Does it only grow or change size at each
>> operator?
>>
>>
>> On Mon, Dec 2, 2013 at 8:14 PM, Vinayak Borkar <[email protected]>wrote:
>>
>>> Preston,
>>>
>>> Let me suggest a way to track down our performance issues in VXQuery.
>>> Let's approach our queries one at a time. First, let's start with the
>>> single collection, scan-based queries and reason about their performance in
>>> comparison to Saxon. As an even smaller goal, can you take your first query
>>> and report running times on the 250MB of data alongwith Saxon's running
>>> times?
>>>
>>> Thanks,
>>> Vinayak
>>>
>>>
>>>
>>>
>>> On 11/29/13, 12:48 PM, Eldon Carman wrote:
>>>
>>>> The query plans are so big, I attached a document with the queries and
>>>> plans.
>>>>
>>>>
>>>> On Wed, Nov 27, 2013 at 8:53 PM, Vinayak Borkar <[email protected]
>>>> <mailto:[email protected]>> wrote:
>>>>
>>>>     Preston,
>>>>
>>>>     For each query, please send the following:
>>>>
>>>>     1. The query
>>>>     2. The translated logical plan
>>>>     3. The optimized physical plan
>>>>
>>>>     Thanks,
>>>>     Vinayak
>>>>
>>>>
>>>>
>>>>     On 11/27/13, 8:16 PM, Eldon Carman wrote:
>>>>
>>>>         It appears that our query process is taking longer than
>>>>         expected. I have
>>>>         created a small set of sensors to test our benchmark queries.
>>>>         The data set
>>>>         is about 250 MB and the queries execute in 10 to 20 seconds with
>>>>         the SAXON
>>>>         XSLT processor. When I tried a few of the queries on VXQuery,
>>>>         the process
>>>>         ran for one hour and still did not complete. I am now looking
>>>>         into where
>>>>         the time is being spent for our query and see why its taking so
>>>>         long.
>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>
Test for q00 (filter) query

(: XQuery Filter Query :)
(: See historical data for Riverside, CA (ASN00008113) station by selecting   :)
(: the weather readings for December 25 over the last 10 years.               :)
let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN/"
for $r in collection($collection)/dataCollection/data
let $date := xs:date(fn:substring(xs:string(fn:data($r/date)), 0, 11))
where $r/station eq "GHCND:ASN00008113" 
    and fn:year-from-date($date) >= (2003) 
    and fn:month-from-date($date) eq 12 
    and fn:day-from-date($date) eq 25
return $r
Saxon Execution time: 0m36.009s
VXQuery Execution time: 1m33.632s


distribute result [%0->$$52]
-- DISTRIBUTE_RESULT  |PARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
    unnest $$52 <- function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}iterate, Args:[%0->$$50]
    -- UNNEST  |PARTITIONED|
      assign [$$50] <- [function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}treat, Args:[%0->$$5, 
{http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = [1d000000e7])]]
      -- ASSIGN  |PARTITIONED|
        select (function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}boolean, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}and, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}boolean, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}and, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}boolean, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}and, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}boolean, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}value-eq, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}child, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}treat, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}treat, Args:[%0->$$5, 
{http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = [1d000000e7])], 
{http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = [1d000000ee])], 
{http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = [1d0000010c])]], 
{http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = [1d00000002])], 
function-call: vxquery:{urn:org.apache.vxquery.operators-ext}promote, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}string QUANT_ONE(bytes[20] = 
[0400114748434e443a41534e3030303038313133])], 
{http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = [1d00000002])]]]], 
function-call: vxquery:{http://www.w3.org/2005/xpath-functions}boolean, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}general-ge, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}year-from-date, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}promote, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}cast, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}substring, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}promote, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}cast, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}child, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[%0->$$5, {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000e7])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000ee])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d0000010b])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000e9])]], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d00000007])]], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d00000007])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[190000000000000000])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000065])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[19000000000000000b])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000065])]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000043])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d000000e7])]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000043])]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d000000e9])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[1900000000000007d3]), {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] 
= [1d000000e9])]]]]]]], function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}boolean, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}value-eq, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}month-from-date, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}promote, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}cast, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}substring, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}promote, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}cast, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}child, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[%0->$$5, {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000e7])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000ee])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d0000010b])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000e9])]], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d00000007])]], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d00000007])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[190000000000000000])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000065])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[19000000000000000b])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000065])]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000043])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d000000e7])]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000043])]]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000002])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[19000000000000000c])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000002])]]]]]]], function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}boolean, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}value-eq, Args:[function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}day-from-date, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}promote, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}cast, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}substring, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}promote, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}cast, 
Args:[function-call: vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}child, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[function-call: vxquery:{urn:org.apache.vxquery.operators-ext}treat, 
Args:[%0->$$5, {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000e7])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000ee])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d0000010b])], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d000000e9])]], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d00000007])]], {http://www.w3.org/2001/XMLSchema}int QUANT_ONE(bytes[5] = 
[1d00000007])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[190000000000000000])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000065])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[19000000000000000b])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000065])]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000043])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d000000e7])]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000043])]]], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000002])], function-call: 
vxquery:{urn:org.apache.vxquery.operators-ext}promote, Args:[function-call: 
vxquery:{http://www.w3.org/2005/xpath-functions}data, 
Args:[{http://www.w3.org/2001/XMLSchema}integer QUANT_ONE(bytes[9] = 
[190000000000000019])], {http://www.w3.org/2001/XMLSchema}int 
QUANT_ONE(bytes[5] = [1d00000002])]]]]]])
        -- STREAM_SELECT  |PARTITIONED|
          exchange 
          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
            data-scan []<-[$$5] <- 
org.apache.vxquery.metadata.VXQueryCollectionDataSource@eef0a29
            -- DATASOURCE_SCAN  |PARTITIONED|
              exchange 
              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                empty-tuple-source
                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                

let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN/"
for $r in collection($collection)/dataCollection/data
where fn:false()
return $r
VXQuery Execution time: 0m35.212s


let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN/"
for $r in collection($collection)/dataCollection/data
where $r/station eq "GHCND:ASN00008113" 
    and fn:false()
return $r
VXQuery Execution time: 0m45.301s


let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN/"
for $r in collection($collection)/dataCollection/data
let $date := xs:date(fn:substring(xs:string(fn:data($r/date)), 0, 11))
where fn:year-from-date($date) >= (2003) 
    and fn:false()
return $r
VXQuery Execution time: 0m50.378s


let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN/"
for $r in collection($collection)/dataCollection/data
let $date := xs:date(fn:substring(xs:string(fn:data($r/date)), 0, 11))
where fn:year-from-date($date) >= (2003) 
    and fn:month-from-date($date) eq 12 
    and fn:false()
return $r
VXQuery Execution time: 1m6.655s


let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN/"
for $r in collection($collection)/dataCollection/data
let $date := xs:date(fn:substring(xs:string(fn:data($r/date)), 0, 11))
where fn:year-from-date($date) >= (2003) 
    and fn:month-from-date($date) eq 12 
    and fn:day-from-date($date) eq 25
    and fn:false()
return $r
VXQuery Execution time: 1m21.443s


let $collection := "/tmp/1.0_partition_ghcnd_all_xml/sensors/ASN/"
for $r in collection($collection)/dataCollection/data
let $date := xs:date(fn:substring(xs:string(fn:data($r/date)), 0, 11))
where $r/station eq "GHCND:ASN00008113" 
    and fn:year-from-date($date) >= (2003) 
    and fn:month-from-date($date) eq 12 
    and fn:day-from-date($date) eq 25
    and fn:false()
return $r
VXQuery Execution time: 1m34.680s

Reply via email to