Thanks for the explanation, Vinayak. Nevertheless: How is the test
integrated into the basic test suite? With every "mvn test"? If so,
I'd still stick to my suggestion. It's absolutely reasonable to
reserve selected tests for special cases like showing the compliance
with XQTS.

Jochen


On Mon, Jan 4, 2010 at 10:59 PM, Vinayak Borkar <[email protected]> wrote:
> Jochen,
>
> The test I mention is not something we have come up with. XQTS is the
> official testsuite to test XQuery compliance, and the query I mention is one
> out of that suite.
>
> The fact that this query takes a long time means that we need to fix the
> engine to make this case more efficient.
>
> If you are interested I could describe in more detail the exact issue and
> some possible fixes.
>
> Vinayak
>
> Jochen Wiedmann wrote:
>>
>> Consider to enable the test only if some system property is set. A
>> normal user won't be able to distinguish between "infinite loop" and
>> "tales a very very long time".
>>
>> Alternatively, select a representative subset of the 1.1M integers and
>> restrict the test to those.
>>
>> Jochen
>>
>>
>> On Mon, Jan 4, 2010 at 9:50 PM, Vinayak Borkar <[email protected]> wrote:
>>>
>>> Its not an infinite loop --
>>>
>>> Expressions/Construct/DirectConElem/DirectConElemContent//Constr-cont-document-3.xq
>>>
>>> is taking a long time to run. I am pasting the query below.
>>>
>>> The query iterates over about 1.1 M integers 70 at a time and calls
>>> subsequence() for the 70 items in the window. This is a quadratic
>>> operation
>>> in the engine -- and takes a long time.
>>>
>>> Should we optimize this case?
>>>
>>>
>>> Thanks,
>>> Vinayak
>>>
>>>
>>> --- Query begin ---
>>>
>>>
>>> declare variable $codepoints as xs:integer+ := (9, (: 0x9 :)
>>>                                               10,(: 0xA :)
>>>                                               13,(: 0xD :)
>>>                                               32 to 55295, (: 0x20 -
>>> 0xD7FF
>>> :)
>>>                                               57344 to 65532, (: 0xE000 -
>>> 0xFFFD :)
>>>                                               65536 to 1114111 (: 0x10000
>>> -
>>> 0x10FFFF :));
>>> declare variable $count as xs:integer := count($codepoints);
>>> declare variable $lineWidth as xs:integer := 70;
>>>
>>> <allCodepoints>
>>>   <!-- Each <r>-element represents a codepoint range. The 's' attribute
>>>        is the start codepoint, the 'e' attribute is the end codepoint.
>>>        Note that these are only *Hints*, since the character range is not
>>> contiguous.
>>>     -->
>>> {
>>>   "&#xA;",
>>>   "&#xA;",
>>>   (: The outputted file is rather big, so to make it managable, we output
>>>      a chunk of $lineWidth characters in each element.
>>>    :)
>>>   for $i in (1 to $count idiv $lineWidth)
>>>   let $startOffset := (($i - 1) * $lineWidth) + 1
>>>   return (<r s="{$codepoints[$startOffset]}"
>>>              e="{$codepoints[$startOffset] + $lineWidth}">
>>>               {
>>>                       codepoints-to-string(subsequence($codepoints,
>>> $startOffset, $lineWidth))
>>>               }
>>>          </r>, "&#xA;")
>>> }
>>> </allCodepoints>
>>>
>>> --- Query end ---
>>>
>>> Vinayak Borkar wrote:
>>>>
>>>> Till,
>>>>
>>>>
>>>> Does XTest on the test suite terminate? Some query is throwing the
>>>> engine
>>>> into an infinite loop. Do you see this?
>>>>
>>>>
>>>> Thanks,
>>>> Vinayak
>>>>
>>>
>>
>>
>>
>
>



-- 
Germanys national anthem is the most boring in the world - how telling!

Reply via email to