Hi,
I have a collection MyData/Test and another collection MyData/Real. I have the following XML occurring about five times in total, 4 times in collection MyData/Test and once in MyData/Real:
<APPLICATION> <APPLICATION_ID>1</APPLICATION_ID> </APPLICATION>
When I seek to delete this application only from MyData/Test using updating xquery like so: xquery version "1.0";
declare namespace fn="http://www.w3.org/2005/xpath-functions";
let $dataSet := 'Test' let $databaseName := 'MyData' let $applicationID := '1'
let $finalURL := fn:concat($databaseName, "/",$dataSet) let $applicationsModified := <APP-DATA-ROOT xmlns:xforms="http://www.w3.org/2002/xforms%22%3E; <APPLICATION> <APPLICATION_ID>2</APPLICATION_ID> </APPLICATION> </APP-DATA-ROOT>
for $all in fn:collection($finalURL) for $anApp in $all/APPLICATION[APPLICATION_ID=$applicationID] return ( delete nodes $anApp )
The application gets deleted from MyData/Real collection as well!
Moreover, an insert statement to insert an APPLICATION element in the return block above, such insert statement placed after the deletion statement above, does not appear to insert anything.
Hi Computer Software Developer,
I had a look at your issue - I attached my setup for reproduction, to make sure there aren't any errors on my side. You can start it by calling * 'java -cp BaseX.jar org.basex.BaseX < commands.txt'*
For me it works fine with the actual release you can get from [1]. Which version of BaseX are you using?
Regarding the insert issue: Are you trying to insert something into an APPLICATION element which is deleted by the delete statement - in this case the insert operation is not carried out at all - as a result of optimization processes. Depending on what you want to do, I'd be happy to help you out ... just let me know.
Feel free to ask for more.
Regards, Lukas
[1] http://basex.org/products/download/all-downloads/
On Tue, May 10, 2011 at 2:53 PM, Computer Software Developer < computer.software.developer@gmail.com> wrote:
Hi,
I have a collection MyData/Test and another collection MyData/Real. I have the following XML occurring about five times in total, 4 times in collection MyData/Test and once in MyData/Real:
<APPLICATION> <APPLICATION_ID>1</APPLICATION_ID> </APPLICATION>
When I seek to delete this application only from MyData/Test using updating xquery like so: xquery version "1.0";
declare namespace fn="http://www.w3.org/2005/xpath-functions";
let $dataSet := 'Test' let $databaseName := 'MyData' let $applicationID := '1'
let $finalURL := fn:concat($databaseName, "/",$dataSet) let $applicationsModified := <APP-DATA-ROOT xmlns:xforms="http://www.w3.org/2002/xforms%22%3E; <APPLICATION> <APPLICATION_ID>2</APPLICATION_ID> </APPLICATION> </APP-DATA-ROOT>
for $all in fn:collection($finalURL) for $anApp in $all/APPLICATION[APPLICATION_ID=$applicationID] return ( delete nodes $anApp )
The application gets deleted from MyData/Real collection as well!
Moreover, an insert statement to insert an APPLICATION element in the return block above, such insert statement placed after the deletion statement above, does not appear to insert anything.
BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
Hi Computer Software Developer,
I had a look at your issue - I attached my setup for reproduction, to make sure there aren't any errors on my side. You can start it by calling * 'java -cp BaseX.jar org.basex.BaseX < commands.txt'*
For me it works fine with the actual release you can get from [1]. Which version of BaseX are you using?
Regarding the insert issue: Are you trying to insert something into an APPLICATION element which is deleted by the delete statement - in this case the insert operation is not carried out at all - as a result of optimization processes. Depending on what you want to do, I'd be happy to help you out ... just let me know.
Feel free to ask for more.
Regards, Lukas
[1] http://basex.org/products/download/all-downloads/
On Tue, May 10, 2011 at 2:53 PM, Computer Software Developer < computer.software.developer@gmail.com> wrote:
Hi,
I have a collection MyData/Test and another collection MyData/Real. I have the following XML occurring about five times in total, 4 times in collection MyData/Test and once in MyData/Real:
<APPLICATION> <APPLICATION_ID>1</APPLICATION_ID> </APPLICATION>
When I seek to delete this application only from MyData/Test using updating xquery like so: xquery version "1.0";
declare namespace fn="http://www.w3.org/2005/xpath-functions";
let $dataSet := 'Test' let $databaseName := 'MyData' let $applicationID := '1'
let $finalURL := fn:concat($databaseName, "/",$dataSet) let $applicationsModified := <APP-DATA-ROOT xmlns:xforms="http://www.w3.org/2002/xforms%22%3E; <APPLICATION> <APPLICATION_ID>2</APPLICATION_ID> </APPLICATION> </APP-DATA-ROOT>
for $all in fn:collection($finalURL) for $anApp in $all/APPLICATION[APPLICATION_ID=$applicationID] return ( delete nodes $anApp )
The application gets deleted from MyData/Real collection as well!
Moreover, an insert statement to insert an APPLICATION element in the return block above, such insert statement placed after the deletion statement above, does not appear to insert anything.
BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
On 11/05/2011 08:27, Lukas Kircher wrote:
Hi Computer Software Developer,
I had a look at your issue - I attached my setup for reproduction, to make sure there aren't any errors on my side. You can start it by calling
'java -cp BaseX.jar org.basex.BaseX < commands.txt'*
For me it works fine with the actual release you can get from [1]. Which version of BaseX are you using?
Regarding the insert issue: Are you trying to insert something into an APPLICATION element which is deleted by the delete statement - in this case the insert operation is not carried out at all - as a result of optimization processes. Depending on what you want to do, I'd be happy to help you out ... just let me know.
Feel free to ask for more.
Regards, Lukas
I could not reproduce it today in my own set up (I dropped the database and re-created the same today). All I can remember from yesterday is that first I was trying some incorrect replace statements (target of replace was a set of nodes instead of just one node) before using delete/insert statements ('cos I needed to replace a set of nodes).
If it helps, when I attempted a query in the UI yesterday (instead of JAX-RX), the database consistently threw some exception and suggested filing a bug report (I did not, unfortunately, store the details and the exception, so do not have access to the same right now).
My comments about insert were incorrect anyway, apologies for the same - I was mistakenly inserting into the parent element of the actual intended location (but was later checking the existence in the actual intended location)
If it happens again, will be more meticulous and will store the various steps/logs. I was using BaseX 6.5.1, will upgrade to 6.6.2 now.
Thanks for your help.
Hi,
thanks for your report. Just for clearance and for the benefit of other readers:
[...] All I can remember from yesterday is
that first I was trying some incorrect replace statements (target of replace was a set of nodes instead of just one node) before using delete/insert statements ('cos I needed to replace a set of nodes).
You could use an iterative approach, i.e.
*for $i in //node return replace node $n with <newnode/>
*This serves as a general solution for similar issues, as an insert or rename statement only allows single target nodes as well.
If it helps, when I attempted a query in the UI yesterday (instead of JAX-RX), the database consistently threw some exception and suggested filing a bug report (I did not, unfortunately, store the details and the exception, so do not have access to the same right now).
Interesting ... my first guess would be that there was some kind of concurrent access between the BaseX server and the GUI version. Make sure you don't use them on the same database at the same time as this could lead to concurrent file access on disk. Although possible, it is not intended. We will try to state this in a clearer manner on our website/documentation.
My comments about insert were incorrect anyway, apologies for the same - I was mistakenly inserting into the parent element of the actual intended location (but was later checking the existence in the actual intended location)
No worries.
If it happens again, will be more meticulous and will store the various steps/logs. I was using BaseX 6.5.1, will upgrade to 6.6.2 now.
Good to hear. There are a lot of changes between different revisions and we're constantly improving the code base. So running the most recent version is highly encouraged.
Feel free to ask for more, regards, Lukas
basex-talk@mailman.uni-konstanz.de