Hi Genneva,

In XQuery Update, it does not matter in which order you supply update
commands (see [1]). The delete can be omitted, as existing binary
resources will be replaced (so in a way STORE is more similar to
REPLACE).

Cheers,
Christian

[1] http://docs.basex.org/wiki/XQuery_Update#Pending_Update_List



On Fri, May 27, 2016 at 2:05 AM, Wang, Genneva <genneva.w...@sap.com> wrote:
> Hi Basex Guru’s
>
> Thanks! So I’ve been trying few things. I think the bath insert works, for
> both db:add and db:store. So right now I’m trying the delete and store
> together.
>
> I have:
>
> db:delete('dbTestRepo', 'testdir/someresource.xml'),
> db:store('dbTestRepo', 'testdir/someresource.xml',
> file:read-binary('/Users/i843335/work/extensibility/dbtest/buyer2.json’))
>
> It am assuming that in this case, it should do delete first (if the path
> exist), and then do the store to the same path. However, I find that
> regardless of whether the existing resource exist for the same resource,
> both are not being committed.
>
> It does seem that the results have 2 updated item, but nothing gets
> persisted when I do db:list(‘dbTestRepo’).
>
> Is there something that I have missed ? Thanks.
>
> Regards,
> -Genneva
>
> From: <basex-talk-boun...@mailman.uni-konstanz.de> on behalf of Dirk Kirsten
> <d...@basex.org>
> Date: Thursday, May 19, 2016 at 11:59 PM
> To: "basex-talk@mailman.uni-konstanz.de"
> <basex-talk@mailman.uni-konstanz.de>
> Subject: Re: [basex-talk] multiple inserts/update/deletes in single
> transaction
>
> Hello Genneva,
>
> this is expected behaviour. BaseX script executed each command separately.
> This is by design and required by the nature of XQuery (Update), which by
> design always executes as one transaction - Which can be difficult do deal
> with if you have a large amount of data and have to e.g. hold it in memory.
>
> Each XQuery runs in one single transaction, so you can simply add your
> documents via XQuery, e.g.
>
> db:add("DB", "embedded7.xml"),
> db:add("DB", "embedded8.xml")
>
> Cheers
>
> Dirk
>
>
> On 05/19/2016 08:11 PM, Wang, Genneva wrote:
>
> Hi
>
> I’m trying to figure out whether batched transaction would work for basex,
> and I came across the RUN and EXECUTE command specified in
> http://files.basex.org/releases/8.4/BaseX84.pdf page 58-59.  The document
> mentioned following in the summary section:
>
> RUN:Evaluates the contents of file as XQuery expression. If the file ends
> with the suffix .bxs, the file content will be evaluated as command script.
> This command can be used to run several commands in a single transaction
> EXECUTE: Evaluates the specified input as command script. This command can
> be used to run several commands in a single transaction.
>
> I’ve tried this myself
> For example, I’d like to know if I batch 2 inserts, if one fails, would both
> inserts get rollback.
>
> I’m using a simple .bxs (attached and also listed below for your
> convenience) and run the execute using GUI.
>
> OPEN test
> ADD TO embedded7.xml <root>embedded</root>
> ADD TO embedded8.xml <root>embedded
> CLOSE
>
> The second ADD (embedded8.xml) is  not a valid xml format so I’m expecting
> it to fail, and rollback both files if any of them have already added. But
> after executing this script, I’m seeing embedded7.xml have been added.
>
> Would you be able to confirm if this is the expected behavior ? If so,  is
> there anyway that I can batch multiple inserts and ensures that these batch
> of files can be committed at the same time, and rollback  all together if
> any of the file has an error ?
>
> Thank you very much for your help.
>
>
> --
> Dirk Kirsten, BaseX GmbH, http://basexgmbh.de
> |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz
> |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer:
> |   Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle
> `-- Phone: 0049 7531 91 68 276, Fax: 0049 7531 20 05 22

Reply via email to