Hello,
I am trying to insert big string into BaseX, and ended corrupting the whole database. Here a test code , can you reproduce it ?
declare updating function local:dbtest($db as xs:string) { db:replace($db,"map",<map>{fn:serialize(1 to 10000000)}</map>) };
local:dbtest("MyDataBase")
output :
Improper use? Potential bug? Your feedback is welcome: Contact: basex-talk@mailman.uni-konstanz.de Version: BaseX 8.0 beta 769b53b Java: Oracle Corporation, 1.8.0_25 OS: Windows 7, amd64 Stack Trace: java.lang.IndexOutOfBoundsException at java.io.RandomAccessFile.writeBytes(Native Method) at java.io.RandomAccessFile.write(Unknown Source) at org.basex.io.random.DataAccess.writeBlock(DataAccess.java:448) at org.basex.io.random.DataAccess.flush(DataAccess.java:49) at org.basex.io.random.DataAccess.close(DataAccess.java:61) at org.basex.data.DiskData.close(DiskData.java:151) at org.basex.core.cmd.Close.close(Close.java:45) at org.basex.query.QueryResources.close(QueryResources.java:110) at org.basex.query.QueryContext.close(QueryContext.java:564) at org.basex.query.QueryProcessor.close(QueryProcessor.java:235) at org.basex.core.cmd.AQuery.query(AQuery.java:129) at org.basex.core.cmd.XQuery.run(XQuery.java:22) at org.basex.core.Command.run(Command.java:379) at org.basex.core.Command.execute(Command.java:95) at org.basex.api.client.LocalSession.execute(LocalSession.java:132) at org.basex.api.client.Session.execute(Session.java:36) at org.basex.core.CLI.execute(CLI.java:106) at org.basex.BaseX.<init>(BaseX.java:124) at org.basex.BaseX.main(BaseX.java:42)
The bug (which occur in some instances if very large strings were stored) has been fixed in the latest snapshot [1].
Thanks, Christian
[1] http://files.basex.org/releases/latest
On Wed, Jan 7, 2015 at 8:15 AM, jean-marc Mercier jeanmarc.mercier@gmail.com wrote:
Hello,
I am trying to insert big string into BaseX, and ended corrupting the whole database. Here a test code , can you reproduce it ?
declare updating function local:dbtest($db as xs:string) { db:replace($db,"map",<map>{fn:serialize(1 to 10000000)}</map>) };
local:dbtest("MyDataBase")
output :
Improper use? Potential bug? Your feedback is welcome: Contact: basex-talk@mailman.uni-konstanz.de Version: BaseX 8.0 beta 769b53b Java: Oracle Corporation, 1.8.0_25 OS: Windows 7, amd64 Stack Trace: java.lang.IndexOutOfBoundsException at java.io.RandomAccessFile.writeBytes(Native Method) at java.io.RandomAccessFile.write(Unknown Source) at org.basex.io.random.DataAccess.writeBlock(DataAccess.java:448) at org.basex.io.random.DataAccess.flush(DataAccess.java:49) at org.basex.io.random.DataAccess.close(DataAccess.java:61) at org.basex.data.DiskData.close(DiskData.java:151) at org.basex.core.cmd.Close.close(Close.java:45) at org.basex.query.QueryResources.close(QueryResources.java:110) at org.basex.query.QueryContext.close(QueryContext.java:564) at org.basex.query.QueryProcessor.close(QueryProcessor.java:235) at org.basex.core.cmd.AQuery.query(AQuery.java:129) at org.basex.core.cmd.XQuery.run(XQuery.java:22) at org.basex.core.Command.run(Command.java:379) at org.basex.core.Command.execute(Command.java:95) at org.basex.api.client.LocalSession.execute(LocalSession.java:132) at org.basex.api.client.Session.execute(Session.java:36) at org.basex.core.CLI.execute(CLI.java:106) at org.basex.BaseX.<init>(BaseX.java:124) at org.basex.BaseX.main(BaseX.java:42)
basex-talk@mailman.uni-konstanz.de