So the problem was my fault as I suspected. And I fixed it and I am now getting the correct data. I was attempting to retrieve a binary/raw document using a Java client without the open/close which locks a database by switching from using a retrieve command to db:retrieve XQuery. I added the following method to the client Query object. It works fine, but let me know if you see anything wrong with it. I particular, is the if(!ok()) needed? I suggest this as an enhancement. Also, is it possible to achieve, by enhancement, similar results using db:store in an XQuery from Java client and an InputStream?
public void execute(final OutputStream output) throws IOException { out.write(4); send(id); if (in.read() > 0) { receive(in, output); } info = receive(); if (!ok()) { throw new IOException(info); } }
On Thu, Jan 28, 2016 at 10:01 AM, Christian Grün christian.gruen@gmail.com wrote:
I am getting the incorrect data downloaded as Mike Engledew said he used
the
"raw" output method to fix. However, "raw" is not listed as one of the valid types for this option. So how should I ensure binary files get downloaded. accurately?
Any SSCCE?
On Thu, Jan 28, 2016 at 3:08 AM, Christian Grün <
christian.gruen@gmail.com>
wrote:
See here: http://docs.basex.org/wiki/Serialization
Am 28.01.2016 7:13 vorm. schrieb "E. Wray Johnson" wray.johnson@gmail.com:
With 8.4...
declare option output:method "raw";
I get
[SEPM0016] Value of 'method' must be one of (xml,xhtml,html,json,csv,text,adaptive,basex).
On Sat, Jan 16, 2016 at 2:06 PM, Mike Engledew <
mike.engledew@gmail.com>
wrote:
If like me your using BaseX 8.3.1 don't forget to add ...
declare option output:method "raw";
before the db:retrieve() otherwise you won't get back what you put
in.
I learned this the hard way trying to extract binary files that were stored in codepage IBM1047 and it took me a while to figure out why
they
came back translated;
On Fri, Jan 15, 2016 at 11:11 AM, E. Wray Johnson wray.johnson@gmail.com wrote:
When using the sample Java client to store/retrieve binary/raw files
I
have to execute separate open/close commands. It is my
understanding that
this locks the database. In a multi-user scenario, such locking is undesirable as binary/raw files can be quite large. And since there
is no
alteration of the indexes etc during such operations, is there a
better way?
Also, why isn't there a corresponding retrieve method on the Java
client,
similar to the store method?
My code to store: BaseXClient session = new BaseXClient(host, port, username,
password);
session.execute("open " + database); session.store(path, inputStream); session.execute("close");
My code to retrieve: BaseXClient session = new BaseXClient(host, port, username,
password);
session.execute("open " + database); session.execute("retrieve " + path, outputStream); session.execute("close");
Thanks in advance!
On Thu, Jan 28, 2016 at 3:08 AM, Christian Grün christian.gruen@gmail.com wrote:
See here: http://docs.basex.org/wiki/Serialization Am 28.01.2016 7:13 vorm. schrieb "E. Wray Johnson" <wray.johnson@gmail.com
:
With 8.4...
declare option output:method "raw";
I get
[SEPM0016] Value of 'method' must be one of (xml,xhtml,html,json,csv,text,adaptive,basex).
On Sat, Jan 16, 2016 at 2:06 PM, Mike Engledew mike.engledew@gmail.com wrote:
If like me your using BaseX 8.3.1 don't forget to add ...
declare option output:method "raw";
before the db:retrieve() otherwise you won't get back what you put in. I learned this the hard way trying to extract binary files that were stored in codepage IBM1047 and it took me a while to figure out why they came back translated;
On Fri, Jan 15, 2016 at 11:11 AM, E. Wray Johnson < wray.johnson@gmail.com> wrote:
When using the sample Java client to store/retrieve binary/raw files I have to execute separate open/close commands. It is my understanding that this locks the database. In a multi-user scenario, such locking is undesirable as binary/raw files can be quite large. And since there is no alteration of the indexes etc during such operations, is there a better way? Also, why isn't there a corresponding retrieve method on the Java client, similar to the store method?
My code to store: BaseXClient session = new BaseXClient(host, port, username, password); session.execute("open " + database); session.store(path, inputStream); session.execute("close");
My code to retrieve: BaseXClient session = new BaseXClient(host, port, username, password); session.execute("open " + database); session.execute("retrieve " + path, outputStream); session.execute("close");
Thanks in advance!