Hi France,
I recall once I've been successful in generating xquery strings by patching the database name into it and then processing it with xquery:eval.
Might this be anche approach for you?
M.

Il giorno mer 6 feb 2019, 09:12 France Baril <france.baril@architextus.com> ha scritto:
Irsh, we have 52 languages and all our system is based on being able to work with any language and let clients add/remove languages without having to call developers. I can't imagine the domino effect of having to build a shell function per language per process that access the DB.

Plus as we are running batch processes, I think we'll just run out of memory.

I'm thinking one function like this per language is what you propose :

rest-path /base/filter-es-us()
function filter-es-us {
let $src-db = db:open(es-us)
let $results := apply-non-updating-processes($src-db)...  where result is a map of (filename, xml) 
return
  for $result in $results
  return  db:replace('staging-es-us', $results)
};

apply-non-updating-processes($src-db){
map:merge(
 for $file in $src-db/*
 res= do x
 return map:entry ($file/base-uri, res)
};


Since we run batch processes I'm also thinking we'll run out of memory with processes like that... or maybe we need to split also small functions so each tiny update is in its own function... then maintaiing functions for 52 languages becomes even harder... or I add an extra layer of abstraction and build the .xqm functions dynamically based on a central code base and the dynamic language names... hmmm....

I'm thinking out loud here trying to find my way outside of dynamic names... but static naming of databases doesn't sound like a good idea in our case. Dynamic naming is at the core of our approach... or maybe I'm so laced in it that I can't see the easy way in?





On Mon, Feb 4, 2019 at 11:46 AM Christian Grün <christian.gruen@gmail.com> wrote:
Hi France,

> I noticed that the latest version of BaseX lost this feature and nothing seems to replace it. I'm trying to improve performance of batch processes and I was counting on that feature a lot. Any change it will come back or that something equivalent will come?

With BaseX 9, we removed the classical GLOBALLOCK option (i.e.,
GLOBALLOCK = false is standard now).

> get db:open($lang)/*
> process
> save to db:open('staging-' || $lang)

The name of your database may be specified as static string in your
query (no matter if you use BaseX 8 or 9):

  get db:open('de')/*
  process
  save to db:open('staging-de')

Did you try this already?
Christian


--
France Baril
Architecte documentaire / Documentation architect
france.baril@architextus.com