query plan / basex:index usage

Wednesday, 20 October 2010 · 2 messages
FE
Fabrice Etanchaud20 Oct 2010 10:26 #
Dear BaseX Team, First, could you tell me how I can get only the query plan of a query, without running it ? Last, is there a way to call, in a same cross db/collection query, basex:index function on each of the dbs/collections ? Thank you for sharing your wonderful native database. Best regards, Fabrice Etanchaud
CG
Christian Grün20 Oct 2010 18:51 #
Dear Fabrice,
Quoted text · Fabrice Etanchaud · 2 lines
> First, could you tell me how I can get only the query plan of a query, > without running it ?
You can modify the "serialize" option to deactive the serialization of your query, using the following database commands: set serialize off; xquery <your query> Alternatively, to avoid evaluation for all queries, you need to get one level deeper, using e.g. the following code snippets (didn't test this, but I think it's correct):
  // create database context
  Context ctx = new Context();
  // activate query info
  ctx.prop.set(Prop.QUERYINFO, true);
  // alternative for activating query info
  // new Set("serialize", false).execute(ctx);
  // create query processor instance
  QueryProcessor qp = new QueryProcessor("your query", ctx);
  // compile query
  qp.compile();
  // close instance
  qp.close();
  // dump query info
  System.out.println(qp.info());
  // close database context
  ctx.close();
Quoted text · Fabrice Etanchaud · 2 lines
> Last, is there a way to call, in a same cross db/collection query, > basex:index function on each of the dbs/collections ?
Yes, that's possible – but (as I just noticed) not in all cases. I've modified our code to support queries of the following kind (please get the latest version from our SVN or wait for basex-6.3.jar, which will be online in a few days):
  for $i in 1 to 10
  let $n := concat('database', $i)
  return doc($n)/basex:index('and', 'text')
Christian

⚡Generated with XQuery