On 05/24/2007 06:27 PM, Stefan Manegold wrote:
> On Thu, May 24, 2007 at 06:15:43PM +0200, Maarten Clements wrote:
>>
>>> -----Original Message-----
>>> From: Stefan Manegold [mailto:[EMAIL PROTECTED] 
>>> Sent: 24 May 2007 18:00
>>> To: [EMAIL PROTECTED]
>>> Cc: monetdb-users@lists.sourceforge.net
>>> Subject: Re: [MonetDB-users] MonetDb-XQuery problem
>>>
>>> On Thu, May 24, 2007 at 05:07:03PM +0200, Maarten Clements wrote:
>>>> Using the following XQuery in MonetDb (WinXP) crashes on large 
>>>> documents
>>> the usual questions:
>>>
>>> 1) which version of MonetDB XQuery are you using?
>> The latest, from sjoerd's directory
> 
> so I guess, this is MonetDB 4.17.1 / MonetDB/XQuery 0.17.1, right?

Yep, and not terribly recent (at least several weeks).

>>> 2) what exactly does "crash" mean?
>>>   does the Mserver simply stop? Is the any error message? Does Mserver
>>>   grow/excessively use resources before crashing? ...?
>> It fills up my memory and after doing that Mserver stops.
> 
> Ok.
> 
>>> 3) what does "large" and "small" mean wrt., your document sizes?
>>>   (serialized file size in byte? number of /collection/doc 
>>> nodes in either
>>>    document? ...?)
>> The problem occurs with C1 = 59Mb, C2 = 7Kb (but I didn't search for the
>> critical sizes:)
>> Both files contain movie data:
>> C1 is IMDB data with nodes: title,year,tag1,tag2...tagx (im not sure how
>> many movies)
>> C2 is Netflix data with nodes: title, year (100 movies)
> 
> count(doc("C1.xml")/collection/doc) ?
> count(doc("C2.xml")/collection/doc) ?
> 
> for both the size that wokr for you, and that that does not (just one for
> each, no need to find the switching point)
> 
>>> 4) how much memory does your machine have?
>> 1 Gb
>>
>>>> (when C1 and C2 are small it works ok):
>>>>  
>>>>>  <col> { 
>>>>>    for $b in doc("C1.xml")/collection/doc 
>>>>>    for $top in doc("C2.xml")/collection/doc
>>>>>    where ($b/year > 1950) and ($b/title = $top/title)
>>>>>    return 
>>>>>      <movie>
>>>>>        {$b/year}
>>>>>      </movie>
>>>>>  } </col>
>>>> If I remove one of the two conditions it works perfectly, e.g.:
>>>>  
>>>>>  <col> { 
>>>>>    for $b in doc("C1.xml")/collection/doc 
>>>>>    for $top in doc("C2.xml")/collection/doc
>>>>>    where ($b/title = $top/title)
>>>>>    return 
>>>>>      <movie>
>>>>>        {$b/year}
>>>>>      </movie>
>>>>>  } </col>
>>>> Can anyone explain this problem?
>>> most probably, the more complex join condition is not 
>>> recognized as join, then the intermediate result (corss 
>>> product) blows up.
>> It is very likely that this is indeed the problem... Why does this happen
>> for a query this simple?
> 
> simply because join recognition in XQuery is not "simple" at all.
> 
> But you can try the algebra version, instead --- well, assuming that you
> won't/can't recompile on Windows, you need to use the pf compiler "by hand",
> from a shell 9"command prompt") like :
> 
>       pf -A query.xq | Mserver <options>
> 
> or, with a MonetDB/XQuery server running:
> 
>       pf -A query.xq | MapiClient -lmil <options>
> 
> However, I cannot tell you, which <options> you need to sucessfully run 
> Mserver
> and/or MapiClient "by hand" from a shell on Windows ...

In the top-level folder of the installation (i.e. in the CWI folder),
there is a .bat script to run a client.  I think there is one for MIL as
well as SQL.  Use that script and it will figure out the magic arguments
to MapiClient.

-- 
Sjoerd Mullender

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
MonetDB-users mailing list
MonetDB-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/monetdb-users

Reply via email to