I have loaded a 10MB XML document into the Tamino. I am trying to run an XQuery from Quip by connecting to the Tamino, but get the error of ‘System error : Heap full’. What should I do?
To understand the space requirements of QuiP
let me explain its architecture.
Quip is a standalone client software, which does
not require a Tamino installation.
Quip can retrieve data from Tamino by way of the ‘collection’ function.
Quip then
tries to see, which parts of a query followed by
a call to the collection function
can be made within the Tamino server.
All the data retrieved from Tamino, will then be
kept in the main memory.
I.e:
collection(“theater”)/PLAY[TITLE=“Cymberline”]
will retrieve just those documents from Tamino, matching the requested
title. The complete query is passed on to Tamino, wheras
let $x collection(“theater”)/PLAY
where $x/TITLE = “Cymberline”
return $x
will retrieve all PLAY documents from Tamino and filter them manually itself.
There is not very much that can be passed on directly to Tamino
(well Quip could do some smart query rewrite, but is does not…)
This is the case,
because Tamino does not yet know
about the let- and where-expressions, because they
are not part of XPath 1.0.
As you see, it is not easy and only in limited
cases possible to make a real data-base
applications with Quip. You have to make
queries in the way that the amount of data
processed by Quip is small and most
of the work can be done within the Tamino server.
When in doubt you can consult the log.txt file written by QuiP.
On a big machine you can try to encrease the
maximal heap size of the quip executor to
a very large value. This can be done in the
options dialoge within the QuiP gui.
Sven Eric
I would suggest using the Java options -Xms and -Xmx which specify initial and maximum heap sizes. I guess reading a 10Mb into memory is blowing this limit. E.g, a 20mb max heap would be specified with:-
java -Xmx20m yourclass…
I am afraid that encreasing the java heap will
not help. The quip executor is not written in
java but in a functional language and has its
own heap. The java parts, as the gui and the API
just wrap the quip.exe executor and pass the
data to the actual execution engine.
Sven Eric