The use of String Constructor does not avoid the global read lock, but I can see with some changes and a suitable set of conventions this could be made to work.
Cheers /Andy <job id="job13" type="ScheduledXQuery" state="cached" user="admin" duration="PT0.007S" reads="(global)" writes="(none)">count( collection(``[BEP]``))</job> On 20 September 2017 at 23:28, Christian Grün <christian.gr...@gmail.com> wrote: > > bxcode:inline-variables($xqcode-uri) as xs:string > > @returns xquery code that is the source code from $xqcode-uri but with > > inlining "constant" variables and operations applied > > > > This could be used as a preprocessor. > > Is this something that could be created from the bits and pieces in the > > current BaseX Java code? > > This reminds me of the discussion with Omar [1]: There is currently no > way to generate a correct string representation for compiled code. In > the GUI Info View, we output a string representation of the optimized > query. In simple cases, this string is a valid and equivalent to the > original query string, but it’s fairly easy to generate invalid > results. > > If it’s an option for you to generate code in XQuery, something like > the following could be done: > > _ bxcode.xqm _______ > > module namespace bxcode = 'bxcode'; > declare function bxcode:bind-external-variables( > $uri as xs:string, > $vars as map(xs:string, xs:string) > ) as xs:string { > let $xqcode := unparsed-text($uri) > return fold-left( > map:keys($vars), $xqcode, function($string, $name) { > let $value := replace($vars($name), ']``', '`{"]``"}`', 'q') > return $string > => replace('declare variable $' || $name || ' external;', '', 'q') > => replace('$' || $name, '``[' || $value || ']``', 'q') > } > ) > }; > > _ example.xq _______ > > declare variable $db external; > count(collection($db)) > > _ run-bxcode.xq _______ > > import module namespace bxcode = 'bxcode' at 'bxcode.xqm'; > bxcode:bind-external-variables('query.xq', map { 'db': 'BEP' }) > > _ output _______ > > count(collection(``[BEP]``)) > > Cheers, > Christian > > [1] https://www.mail-archive.com/basex-talk@mailman.uni- > konstanz.de/msg09863.html >