James, thanks for testing. We have a bunch of test cases that succeeded for the rewritten index handling, but as it seems, we definitely need some more. I'm pretty sure it's a single bug that causes all the error messages (because the code is in itself pretty straightforward), so I would be glad if you could compose a little, self-contained example that provokes the error. I have attached a little (working) command script which you can open in the gui (and execute there) and modify it until it raises one of the reported errors.
Thanks, Christian On Fri, Aug 1, 2014 at 7:14 PM, James Ball <basex-t...@jamesball.co.uk> wrote: > Hi Christian, > >> I'm glad to tell you that I have now implemented the projected optimizations > > Thank you for providing the snapshot. I've downloaded it and begun running > some tests. > > Unfortunately I'm immediately finding some odd behaviour. I'm using the > script I provided in my original issue report to the list. > > I can use replace() to add as many documents to the database as I want as > long as the documents are new (no document exists to be replaced). > > If I use replace() on one document in a transaction ($files set to 1 in my > script) then everything works. > > However if I try to replace more than one file in a transaction ($files set > to 2+) I get an error. > > Error: > Improper use? Potential bug? Your feedback is welcome: > Contact: basex-talk@mailman.uni-konstanz.de > Version: BaseX 8.0 beta 3a7d766 > Java: Oracle Corporation, 1.7.0_60 > OS: Mac OS X, x86_64 > Stack Trace: > java.lang.RuntimeException: Key does not exist: 'Name' > at org.basex.util.Util.notExpected(Util.java:60) > at > org.basex.index.value.UpdatableDiskValues.delete(UpdatableDiskValues.java:82) > at org.basex.data.DiskData.indexDelete(DiskData.java:390) > at org.basex.data.DiskData.indexDelete(DiskData.java:452) > at org.basex.data.Data.delete(Data.java:632) > at org.basex.data.atomic.Delete.apply(Delete.java:39) > at > org.basex.data.atomic.AtomicUpdateCache.applyUpdates(AtomicUpdateCache.java:298) > at > org.basex.data.atomic.AtomicUpdateCache.execute(AtomicUpdateCache.java:282) > at org.basex.query.up.DataUpdates.apply(DataUpdates.java:161) > at org.basex.query.up.ContextModifier.apply(ContextModifier.java:118) > at org.basex.query.up.Updates.apply(Updates.java:129) > at org.basex.query.QueryContext.iter(QueryContext.java:351) > at org.basex.query.QueryContext.execute(QueryContext.java:605) > at org.basex.query.QueryProcessor.execute(QueryProcessor.java:100) > at org.basex.core.cmd.AQuery.query(AQuery.java:82) > at org.basex.core.cmd.XQuery.run(XQuery.java:22) > at org.basex.core.Command.run(Command.java:360) > at org.basex.core.Command.execute(Command.java:94) > at org.basex.gui.GUI.exec(GUI.java:417) > at org.basex.gui.GUI.access$500(GUI.java:41) > at org.basex.gui.GUI$8.run(GUI.java:361) > > If I keep running the command then eventually it will work (eventually is > related to the number of documents being replace/in the database). Note that > this is in the GUI with the database open in the GUI. > > If I do it in the GUI but with the database closed I get alternating errors > between 'Key does not exist' and 'Key should not exist' each time I run. The > error never corrects itself. > > I'm happy to investigate further and provide more details if required but I'm > confused as to what might actually be happening to cause this so I'm not sure > where to go next. Let me if you need anything from me. > > Regards, James
updindex.bxs
Description: Binary data