Hi Christian!, thanks for your reply :-)

I've just downloaded the latest snapshot [1] and executed the query [2],
and yes: the problem is still there.

Cheers,
Sebastian.

[1] https://imgur.com/ahgMg7p
[2] https://imgur.com/tDCAtCu

On Mon, May 11, 2020 at 3:58 PM Christian Grün <christian.gr...@gmail.com>
wrote:

> Maybe it's a newbie issue, but I would like your comments.
>>
>
> …definitely something you shouldn't encounter as a newbie either ;) Thanks
> for reporting it.
>
> Does the exception also occur with the latest snapshot [1]?
>
> Cheers
> Christian
>
> [1] http://files.basex.org/releases/latest/
>
>
>
>
>
>> I'm writing a RESTXQ method to search among a couple of databases. ( >100
>> databases )
>>
>> Some databases are split into a couple of parts due to the number of
>> nodes. For example US: it's separated into US00, US01 and US02.
>>
>> So, my problem is:
>>
>> if I replace "*for $usPart in ('US00')*" by "*for $usPart in
>> ('US00','US01',''US02)*" in *QUERY [A]*, I get this error:
>>
>> *Improper use? Potential bug? Your feedback is welcome:*
>> *Contact: basex-talk@mailman.uni-konstanz.de
>> <basex-talk@mailman.uni-konstanz.de>*
>> *Version: BaseX 9.3.2*
>> *Java: Oracle Corporation, 1.8.0_251*
>> *OS: Windows 10, amd64*
>> *Stack Trace: *
>> *java.lang.NullPointerException*
>> * at org.basex.query.expr.path.Path.index(Path.java:673)*
>> * at org.basex.query.expr.path.Path.optimize(Path.java:157)*
>> * at org.basex.query.expr.gflwor.For.toPredicate(For.java:220)*
>> * at org.basex.query.expr.gflwor.GFLWOR.optimizeWhere(GFLWOR.java:532)*
>> * at org.basex.query.expr.gflwor.GFLWOR.optimize(GFLWOR.java:109)*
>> * at org.basex.query.expr.gflwor.GFLWOR.compile(GFLWOR.java:100)*
>> * at org.basex.query.expr.Extension.compile(Extension.java:45)*
>> * at org.basex.query.expr.SwitchGroup.compile(SwitchGroup.java:40)*
>> * at org.basex.query.expr.Switch.compile(Switch.java:60)*
>> * at org.basex.query.expr.gflwor.GFLWOR.compile(GFLWOR.java:96)*
>> * at org.basex.query.expr.gflwor.ForLet.compile(ForLet.java:43)*
>> * at org.basex.query.expr.gflwor.GFLWOR.compile(GFLWOR.java:90)*
>> * at org.basex.query.scope.MainModule.comp(MainModule.java:81)*
>> * at org.basex.query.QueryCompiler.compile(QueryCompiler.java:114)*
>> * at org.basex.query.QueryCompiler.compile(QueryCompiler.java:105)*
>> * at org.basex.query.QueryContext.compile(QueryContext.java:312)*
>> * at org.basex.query.QueryProcessor.compile(QueryProcessor.java:79)*
>>
>>
>> Using "*for $usPart in ('US00')*" it works without any problem. With one
>> element there is no problem, with two or more it fails.
>>
>> Any ideas about what I'm doing wrong?
>>
>> Here is the
>> *QUERY [A]*
>>
>> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>> declare namespace gb="http://www.ipo.gov.uk/schemas/tm";;
>>
>> let $text:="christian"
>> let $registries:=('GB','US')
>>
>> let $results :=
>>   for $registry in $registries
>>    return
>>    switch ($registry)
>>
>>            case "US"
>>            return
>>            (# db:enforceindex #) {
>>                   for $usPart in ('US00')
>>                   for $tmUS in
>> db:open($usPart)/trademark-applications-daily/application-information/file-segments/action-keys/case-file
>>                   where $tmUS/case-file-header/mark-identification/text()
>> contains text {$text} using stemming
>>                   return
>> <trademark><ipo>US</ipo><text>{$tmUS/case-file-header/mark-identification/text()}</text></trademark>
>>                 }
>>
>>            case "GB"
>>            return
>>                (# db:enforceindex #) {
>>                    for $tmGB in
>> db:open('GB')/gb:MarkLicenceeExportList/gb:TradeMark
>>                   where
>> $tmGB/gb:WordMarkSpecification/gb:MarkVerbalElementText/text() contains
>> text {$text}
>>                     return
>> <trademark><ipo>GB</ipo><text>{$tmGB/gb:WordMarkSpecification/gb:MarkVerbalElementText/text()}</text></trademark>
>>
>>                 }
>>
>>             default return ""
>>
>>     return
>>     <result>
>>         <total>{count($results)}</total>
>>         <trademarks>
>>         {
>>             for $result in $results
>>             return $result
>>         }
>>         </trademarks>
>>     </result>
>>
>> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> Regards,
>> Sebastian
>>
>

Reply via email to