Note that I'm not using the GUI, I'm using the basexclient command via a
bash script.

I have the basexserver running as a "service" (meaning it's a background
task under OS X and then I'm using git commit hooks to run bash scripts
that call the basexclient command.

Cheers,

E.
—————
Eliot Kimber, Owner
Contrext, LLC
http://contrext.com




On 3/25/15, 12:54 PM, "Christian Grün" <christian.gr...@gmail.com> wrote:

>Phew, it's really difficult to say anything on this.As long as we
>cannot reproduce this on at least a second machine, it's hardly
>possible to tell what's happening here.
>
>As indicated, I haven't experienced a similar behavior so far, neither
>on my own system, which is pretty similar to yours, nor on any server
>machines in our productive instances. But of course I couldn't
>seriously recommend to go on with your current setup as long as the
>problem persists.
>
>If you want to continue working on this, maybe some more questions:
>
>1. Does this only happen in the GUI or also on command line?
>2. Do you have any other JVM instance running beside the single BaseX
>GUI instance?
>3. Do you get the same error when restarting the GUI?
>
>Christian
>
>
>
>
>On Wed, Mar 25, 2015 at 3:03 PM, Goetz Heller <hel...@hellerim.de> wrote:
>> Hi Christian,
>>
>> this time, both the function you've seen already and a different query
>>which tries to extract data from a larger Xml file fail with the
>>behavior described. In both query execution plans you can see that there
>>is some "optimization" which places an empty pair of parentheses into
>>the optimized query where something different should be. It looks as if
>>an shortage of some - memory? - resources throws an exception which is
>>silently caught somewhere. I know from my own programming experience
>>that it happens like that: a boring nuisance is caught in the middle of
>>something nice being developed so you neutralize this effect temporarily
>>- and then simply forget it. Is it possible that something similar
>>happened in this case?
>>
>> The second query is too complicated to simply reduce its complexity.
>>But I suppose you would be able to get the same behavior if you took a
>>machine like mine - a laptop with 8 GB RAM and an Intel dual core
>>processor running at 1,8 GHz and Win 8.1. Possibly reduce the RAM by 4
>>GB, or run a VMWare virtual machine on it (what I cannot do here because
>>Microsoft's Hypervisor is installed), and then experiment using your
>>tools at hand. I had a Microsoft VS 2013 Community Edition installed,
>>several Eclipse versions, and Node.js (none of these running when the
>>problem showed up). No Microsoft Office. Unfortunately, I cannot invest
>>to much time investigating the issue since I have a lot of other things
>>to do, but let me know anyway if I can give you further information. At
>>first sight, I liked BaseX very much for its simple installation and
>>ease of use, its small footprint and its well-thought GUI, but I will
>>not be able to use it in a project if I cannot rely on the results it
>>delivers.
>>
>> Kind regards,
>>
>> Goetz
>>
>> P.S. Here the query plan for the second query; you will see that the
>>$ti variable is not resolved appropriately (line 37 of output).
>>
>> BEGIN_OUTPUT>>>
>> Compiling:
>> - inlining $retVal_5
>> - simplifying flwor expression
>> - pre-evaluating doc("C:\test\Labels.xml")
>> - rewriting (compare(@*:label, $key_0) = 0)
>> - rewriting (compare(@*:LG, "DE") = 0)
>> - inlining $retVal_1
>> - simplifying flwor expression
>> - rewriting (compare(@*:label, $key_2) = 0)
>> - rewriting (compare(@*:LG, $lang_3) = 0)
>> - rewriting (tokenize($nodocojs_9, "-"))[position() = 2]
>> - inlining local:slz#1
>> - inlining $arg_15
>> - simplifying flwor expression
>> - rewriting (tokenize($nodocojs_9, "/"))[position() = 1]
>> - removing unknown element/attribute text
>> - pre-evaluating $ti_7/*:TI_TEXT/()
>> - inlining local:getLabel#1
>> - inlining $key_16
>> - simplifying flwor expression
>> - inlining local:getLabel2#2
>> - removing redundant $lang_18 as xs:string cast.
>> - inlining $key_17
>> - inlining $lang_18
>> - removing unknown element/attribute TERM
>> - pre-evaluating document-node
>>{"Labels.xml"}/*:LABELS/*:LABEL[compare(@*:label, "_and") =
>>0.0]/()/text()
>> - simplifying flwor expression
>> - inlining $pd_8
>> - inlining $nd_10
>> - inlining $oj_11
>> - inlining $ds_12
>> - inlining $dt_13
>> - inlining $hd_14
>> Query:
>> declare variable $lang as xs:string := 'DE'; declare variable $labels
>>:= doc('C:\test\Labels.xml'); declare function local:getLabel( $key ) {
>>let $retVal := $labels/LABELS/LABEL[compare(@label, $key) =
>>0]/TERM[compare(@LG, $lang) = 0]/text() return $retVal }; declare
>>function local:getLabel2( $key, $lang as xs:string ) {
>>$labels/LABELS/LABEL[compare(@label, $key) = 0]/TERM[compare(@LG, $lang)
>>= 0]/text() }; declare function local:slz( $arg ) { let $retVal :=
>>xs:string(xs:double($arg)) return $retVal }; for $n in(/TED_EXPORT) let
>>$ti := $n/TRANSLATION_SECTION/ML_TITLES/ML_TI_DOC[@LG=$lang] let $pd :=
>>$n/CODED_DATA_SECTION/REF_OJS/DATE_PUB/text() let $nodocojs :=
>>$n/CODED_DATA_SECTION/NOTICE_DATA/NO_DOC_OJS let $nd :=
>>concat(local:slz(tokenize($nodocojs, '-')[2]), '-', tokenize($nodocojs,
>>'/')[1]) let $oj := concat($n/CODED_DATA_SECTION/REF_OJS/NO_OJ, '/',
>>substring($n/CODED_DATA_SECTION/REF_OJS/DATE_PUB, 1, 4)) let $ds :=
>>$n/CODED_DATA_SECTION/CODIF_DATA/DS_DATE_DISPATCH/text() let $dt :=
>>replace(replace($n/CODED_DATA_SECTION/CODIF_DATA/DT_DATE_FOR_SUBMISSION,
>>' ', ' '), ':', ' ') let $hd :=
>>$n/CODED_DATA_SECTION/CODIF_DATA/HEADING/text() return ( <line>1.0
>></line>, <line>TI: {$ti/TI_CY/replace(replace(text(), 'die ', ''), 'das
>>', '')}-{$ti/TI_TOWN/text()}: {$ti/TI_TEXT/text}</line>, <line>PD:
>>{$pd}</line>, <line>ND: {$nd}</line>, <line>OJ: {$oj}</line>, <line>DS:
>>{$ds}</line>, <line>DT: {$dt}</line>, <line>HD: {$hd}</line>, <line>LB:
>>{local:getLabel('_and')}</line>, <line>LB_FR: {local:getLabel2('_and',
>>'FR')}</line> )
>> Optimized Query:
>> for $n_6 in (db:open-pre("20150324_058",0), ...)/*:TED_EXPORT let $ti_7
>>:= $n_6/*:TRANSLATION_SECTION/*:ML_TITLES/*:ML_TI_DOC[(@*:LG = "DE")]
>>let $nodocojs_9 := $n_6/*:CODED_DATA_SECTION/*:NOTICE_DATA/*:NO_DOC_OJS
>>return (element line { ("1.0 ") }, element line { ("TI: ",
>>$ti_7/*:TI_CY/replace(replace(text(), "die ", ""), "das ", ""), "-",
>>$ti_7/*:TI_TOWN/text(), ": ", ()) }, element line { ("PD: ",
>>$n_6/*:CODED_DATA_SECTION/*:REF_OJS/*:DATE_PUB/text()) }, element line {
>>("ND: ", concat(basex:item-at(tokenize($nodocojs_9, "-"), 2) cast as
>>xs:double? cast as xs:string?, "-", basex:item-at(tokenize($nodocojs_9,
>>"/"), 1))) }, element line { ("OJ: ",
>>concat($n_6/*:CODED_DATA_SECTION/*:REF_OJS/*:NO_OJ, "/",
>>substring($n_6/*:CODED_DATA_SECTION/*:REF_OJS/*:DATE_PUB, 1, 4))) },
>>element line { ("DS: ",
>>$n_6/*:CODED_DATA_SECTION/*:CODIF_DATA/*:DS_DATE_DISPATCH/text()) },
>>element line { ("DT: ",
>>replace(replace($n_6/*:CODED_DATA_SECTION/*:CODIF_DATA/*:DT_DATE_FOR_SUBM
>>ISSION, " ", "  "), ":", " ")) }, element line { ("HD: ",
>>$n_6/*:CODED_DATA_SECTION/*:CODIF_DATA/*:HEADING/text()) }, element line
>>{ ("LB: ", document-node
>>{"Labels.xml"}/*:LABELS/*:LABEL[compare(@*:label, "_and") =
>>0.0]/*:TERM[compare(@*:LG, "DE") = 0.0]/text()) }, element line {
>>("LB_FR: ", ()) })
>> Result:
>> - Hit(s): 17590 Items
>> - Updated: 0 Items
>> - Printed: 454 KB
>> - Read Locking: global
>> - Write Locking: none
>> Timing:
>> - Parsing: 14.83 ms
>> - Compiling: 198.69 ms
>> - Evaluating: 991.26 ms
>> - Printing: 31.57 ms
>> - Total Time: 1236.35 ms
>> Query plan:
>> <QueryPlan compiled="true">
>>   <GFLWOR>
>>     <For>
>>       <Var name="$n" id="6"/>
>>       <IterPath>
>>         <DBNodeSeq size="1759">
>>           <DBNode name="20150324_058" pre="0"/>
>>           <DBNode name="20150324_058" pre="4945"/>
>>           <DBNode name="20150324_058" pre="6786"/>
>>           <DBNode name="20150324_058" pre="9742"/>
>>           <DBNode name="20150324_058" pre="14138"/>
>>         </DBNodeSeq>
>>         <IterStep axis="child" test="*:TED_EXPORT"/>
>>       </IterPath>
>>     </For>
>>     <Let>
>>       <Var name="$ti" id="7"/>
>>       <IterPath>
>>         <VarRef>
>>           <Var name="$n" id="6"/>
>>         </VarRef>
>>         <IterStep axis="child" test="*:TRANSLATION_SECTION"/>
>>         <IterStep axis="child" test="*:ML_TITLES"/>
>>         <IterStep axis="child" test="*:ML_TI_DOC">
>>           <CmpG op="=">
>>             <CachedPath>
>>               <IterStep axis="attribute" test="*:LG"/>
>>             </CachedPath>
>>             <Str value="DE" type="xs:string"/>
>>           </CmpG>
>>         </IterStep>
>>       </IterPath>
>>     </Let>
>>     <Let>
>>       <Var name="$nodocojs" id="9"/>
>>       <IterPath>
>>         <VarRef>
>>           <Var name="$n" id="6"/>
>>         </VarRef>
>>         <IterStep axis="child" test="*:CODED_DATA_SECTION"/>
>>         <IterStep axis="child" test="*:NOTICE_DATA"/>
>>         <IterStep axis="child" test="*:NO_DOC_OJS"/>
>>       </IterPath>
>>     </Let>
>>     <List>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="1.0 " type="xs:string"/>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="TI: " type="xs:string"/>
>>         <MixedPath>
>>           <VarRef>
>>             <Var name="$ti" id="7"/>
>>           </VarRef>
>>           <IterStep axis="child" test="*:TI_CY"/>
>>           <FnReplace name="replace(string,pattern,replace[,mod])">
>>             <FnReplace name="replace(string,pattern,replace[,mod])">
>>               <CachedPath>
>>                 <IterStep axis="child" test="text()"/>
>>               </CachedPath>
>>               <Str value="die " type="xs:string"/>
>>               <Str value="" type="xs:string"/>
>>             </FnReplace>
>>             <Str value="das " type="xs:string"/>
>>             <Str value="" type="xs:string"/>
>>           </FnReplace>
>>         </MixedPath>
>>         <Str value="-" type="xs:string"/>
>>         <CachedPath>
>>           <VarRef>
>>             <Var name="$ti" id="7"/>
>>           </VarRef>
>>           <IterStep axis="child" test="*:TI_TOWN"/>
>>           <IterStep axis="child" test="text()"/>
>>         </CachedPath>
>>         <Str value=": " type="xs:string"/>
>>         <Empty size="0"/>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="PD: " type="xs:string"/>
>>         <IterPath>
>>           <VarRef>
>>             <Var name="$n" id="6"/>
>>           </VarRef>
>>           <IterStep axis="child" test="*:CODED_DATA_SECTION"/>
>>           <IterStep axis="child" test="*:REF_OJS"/>
>>           <IterStep axis="child" test="*:DATE_PUB"/>
>>           <IterStep axis="child" test="text()"/>
>>         </IterPath>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="ND: " type="xs:string"/>
>>         <FnConcat name="concat(atom1,atom2[,...])">
>>           <Cast type="xs:string?">
>>             <Cast type="xs:double?">
>>               <BaseXItemAt name="item-at(items,pos)">
>>                 <FnTokenize name="tokenize(string[,pattern[,mod]])">
>>                   <VarRef>
>>                     <Var name="$nodocojs" id="9"/>
>>                   </VarRef>
>>                   <Str value="-" type="xs:string"/>
>>                 </FnTokenize>
>>                 <Int value="2" type="xs:integer"/>
>>               </BaseXItemAt>
>>             </Cast>
>>           </Cast>
>>           <Str value="-" type="xs:string"/>
>>           <BaseXItemAt name="item-at(items,pos)">
>>             <FnTokenize name="tokenize(string[,pattern[,mod]])">
>>               <VarRef>
>>                 <Var name="$nodocojs" id="9"/>
>>               </VarRef>
>>               <Str value="/" type="xs:string"/>
>>             </FnTokenize>
>>             <Int value="1" type="xs:integer"/>
>>           </BaseXItemAt>
>>         </FnConcat>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="OJ: " type="xs:string"/>
>>         <FnConcat name="concat(atom1,atom2[,...])">
>>           <IterPath>
>>             <VarRef>
>>               <Var name="$n" id="6"/>
>>             </VarRef>
>>             <IterStep axis="child" test="*:CODED_DATA_SECTION"/>
>>             <IterStep axis="child" test="*:REF_OJS"/>
>>             <IterStep axis="child" test="*:NO_OJ"/>
>>           </IterPath>
>>           <Str value="/" type="xs:string"/>
>>           <FnSubstring name="substring(string,start[,len])">
>>             <IterPath>
>>               <VarRef>
>>                 <Var name="$n" id="6"/>
>>               </VarRef>
>>               <IterStep axis="child" test="*:CODED_DATA_SECTION"/>
>>               <IterStep axis="child" test="*:REF_OJS"/>
>>               <IterStep axis="child" test="*:DATE_PUB"/>
>>             </IterPath>
>>             <Int value="1" type="xs:integer"/>
>>             <Int value="4" type="xs:integer"/>
>>           </FnSubstring>
>>         </FnConcat>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="DS: " type="xs:string"/>
>>         <IterPath>
>>           <VarRef>
>>             <Var name="$n" id="6"/>
>>           </VarRef>
>>           <IterStep axis="child" test="*:CODED_DATA_SECTION"/>
>>           <IterStep axis="child" test="*:CODIF_DATA"/>
>>           <IterStep axis="child" test="*:DS_DATE_DISPATCH"/>
>>           <IterStep axis="child" test="text()"/>
>>         </IterPath>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="DT: " type="xs:string"/>
>>         <FnReplace name="replace(string,pattern,replace[,mod])">
>>           <FnReplace name="replace(string,pattern,replace[,mod])">
>>             <IterPath>
>>               <VarRef>
>>                 <Var name="$n" id="6"/>
>>               </VarRef>
>>               <IterStep axis="child" test="*:CODED_DATA_SECTION"/>
>>               <IterStep axis="child" test="*:CODIF_DATA"/>
>>               <IterStep axis="child" test="*:DT_DATE_FOR_SUBMISSION"/>
>>             </IterPath>
>>             <Str value=" " type="xs:string"/>
>>             <Str value="  " type="xs:string"/>
>>           </FnReplace>
>>           <Str value=":" type="xs:string"/>
>>           <Str value=" " type="xs:string"/>
>>         </FnReplace>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="HD: " type="xs:string"/>
>>         <IterPath>
>>           <VarRef>
>>             <Var name="$n" id="6"/>
>>           </VarRef>
>>           <IterStep axis="child" test="*:CODED_DATA_SECTION"/>
>>           <IterStep axis="child" test="*:CODIF_DATA"/>
>>           <IterStep axis="child" test="*:HEADING"/>
>>           <IterStep axis="child" test="text()"/>
>>         </IterPath>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="LB: " type="xs:string"/>
>>         <IterPath>
>>           <DBNode name="Labels" pre="0"/>
>>           <IterStep axis="child" test="*:LABELS"/>
>>           <IterStep axis="child" test="*:LABEL">
>>             <CmpR min="0.0" max="0.0">
>>               <FnCompare name="compare(first,second[,collation])">
>>                 <CachedPath>
>>                   <IterStep axis="attribute" test="*:label"/>
>>                 </CachedPath>
>>                 <Str value="_and" type="xs:string"/>
>>               </FnCompare>
>>             </CmpR>
>>           </IterStep>
>>           <IterStep axis="child" test="*:TERM">
>>             <CmpR min="0.0" max="0.0">
>>               <FnCompare name="compare(first,second[,collation])">
>>                 <CachedPath>
>>                   <IterStep axis="attribute" test="*:LG"/>
>>                 </CachedPath>
>>                 <Str value="DE" type="xs:string"/>
>>               </FnCompare>
>>             </CmpR>
>>           </IterStep>
>>           <IterStep axis="child" test="text()"/>
>>         </IterPath>
>>       </CElem>
>>       <CElem>
>>         <QNm value="line" type="xs:QName"/>
>>         <Str value="LB_FR: " type="xs:string"/>
>>         <Empty size="0"/>
>>       </CElem>
>>     </List>
>>   </GFLWOR>
>> </QueryPlan><<<END_OUTPUT
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Christian Grün [mailto:christian.gr...@gmail.com]
>> Gesendet: Mittwoch, 25. März 2015 14:00
>> An: Goetz Heller
>> Cc: BaseX
>> Betreff: Re: [basex-talk] Simple xQuery functions do not work as
>>expected
>>
>>> the issue showed up again, this time outside of a function. The
>>>computer was only moderately charged, but the change of behavior
>>>occurred after I loaded a 25MB text file into Notepad++. Should I
>>>change something in the JVM settings?
>>
>> To be honest, I really have no clue yet what's going on here (I can't
>>remember to have encountered a similar behavior before).. If you want,
>>you could once again try to simplify the example again as much as
>>possible and send it to us. Of course it would be great if you manage to
>>reproduce it on any other machine you can get your hands on.
>>
>> You are exclusively using the BaseX GUI, right? Does the problem also
>>happen on command-line?
>>
>>
>


Reply via email to