Hi everyone! it's me again.
Here is my doubt:
If I execute this query:
* (# db:enforceindex #) { for $db in ('US00','US01','US02') for $tmUS in db:open($db)/trademark-applications-daily/application-information/file-segments/action-keys/case-file where $tmUS/case-file-header/mark-identification/text() contains text { 'apple' } return $tmUS/case-file-header/mark-identification/text() }*
I get 4k results in 139ms from three databases of 90GB and 13M of records. It works like a charm. [01]
But, if I include that query into a *for* and then into a *switch* ( I tried with *if-then-else* too ), the same query returns only 11 results in 107ms [02]:
*declare namespace gb="http://www.ipo.gov.uk/schemas/tm http://www.ipo.gov.uk/schemas/tm";* *let $text := "apple"* *let $registries := ('US')*
*for $registry in $registries* *return * * switch ($registry)*
* case "US"* * return * * (# db:enforceindex #) { * * for $db in ('US00','US01','US02')* * for $tmUS in db:open($db)/trademark-applications-daily/application-information/file-segments/action-keys/case-file* * where $tmUS/case-file-header/mark-identification/text() contains text { $text }* * return $tmUS/case-file-header/mark-identification/text()* * }*
* 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 $tmGB/gb:WordMarkSpecification/gb:MarkVerbalElementText/text()* * }*
* default return "Unknown registry code"*
I noticed that removing the case option "GB" ( even if it's not evaluated ), it works fine and returns the 4k records [03]:
*declare namespace gb="http://www.ipo.gov.uk/schemas/tm http://www.ipo.gov.uk/schemas/tm";* *let $text := "apple"* *let $registries := ('US')*
*for $registry in $registries* *return * * switch ($registry)*
* case "US"* * return * * (# db:enforceindex #) { * * for $db in ('US00','US01','US02')* * for $tmUS in db:open($db)/trademark-applications-daily/application-information/file-segments/action-keys/case-file* * where $tmUS/case-file-header/mark-identification/text() contains text { $text }* * return $tmUS/case-file-header/mark-identification/text()* * }*
* default return "Unknown registry code"*
What I'm missing here? is this the right behaviour?
Best regards, Sebastian
[01] https://imgur.com/o4RUUyO [02] https://imgur.com/533c0rI [03] https://imgur.com/mCb3qEe