Deleting entities sometimes results in data truncation errors
Created by: Florian Spreckelsen
When deleteing an entity A with parent B that in turn has parent C, data truncation errors of the type
linkahead | RESPONSE ENTITY:<?xml version="1.0" encoding="UTF-8"?>
linkahead | <?xml-stylesheet type="text/xsl" href="https://localhost:10443/webinterface/1597666993/webcaosdb.xsl" ?>
linkahead | <Response username="admin" realm="PAM" srid="ed5b03b6-ad39-48d3-b90d-c3b714bc498c" timestamp="1597668501397" baseuri="https://localhost:10443">
linkahead | <UserInfo username="admin" realm="PAM">
linkahead | <Roles>
linkahead | <Role>administration</Role>
linkahead | </Roles>
linkahead | </UserInfo>
linkahead | <Error code="500" description="An unexpected server error has occurred.">SRID = ed5b03b6-ad39-48d3-b90d-c3b714bc498c
linkahead |
linkahead | Please report this server error to and include the SRID into your report.</Error>
linkahead | </Response>
linkahead |
linkahead | caosdb.server.database.exceptions.TransactionException: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '6306>6318'
linkahead | at caosdb.server.database.backend.implementation.MySQL.MySQLDeleteEntityProperties.execute(MySQLDeleteEntityProperties.java:51) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.backend.transaction.DeleteEntityProperties.execute(DeleteEntityProperties.java:51) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.BackendTransaction.execute(BackendTransaction.java:232) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.backend.transaction.DeleteEntity.execute(DeleteEntity.java:41) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.BackendTransaction.executeTransaction(BackendTransaction.java:148) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.transaction.TransactionInterface.execute(TransactionInterface.java:44) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.transaction.Delete.delete(Delete.java:108) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.transaction.Delete.transaction(Delete.java:103) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.transaction.Transaction.execute(Transaction.java:171) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.resource.transaction.EntityResource.httpDeleteInChildClass(EntityResource.java:153) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.resource.AbstractCaosDBServerResource.httpDelete(AbstractCaosDBServerResource.java:288) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
linkahead | at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
linkahead | at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
linkahead | at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
linkahead | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:511) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.delete(ServerResource.java:207) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.doHandle(ServerResource.java:608) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:662) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.ServerResource.handle(ServerResource.java:1020) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.resource.Finder.handle(Finder.java:236) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.CaosDBServer$2.handle(CaosDBServer.java:549) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.CaosDBServer$3.handle(CaosDBServer.java:567) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:77) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.Application.handle(Application.java:385) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.doHandle(Router.java:422) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Router.handle(Router.java:641) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.doHandle(Filter.java:150) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.routing.Filter.handle(Filter.java:197) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.Component.handle(Component.java:408) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.CaosDBComponent.handle(CaosDBServer.java:880) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.Server.handle(Server.java:507) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.restlet.ext.jetty.JettyServerHelper$WrappedServer.handle(JettyServerHelper.java:256) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at java.lang.Thread.run(Thread.java:834) ~[?:?]
linkahead | Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '6306>6318'
linkahead | at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at snaq.db.CachedPreparedStatement.execute(CachedPreparedStatement.java:328) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | at caosdb.server.database.backend.implementation.MySQL.MySQLDeleteEntityProperties.execute(MySQLDeleteEntityProperties.java:47) ~[caosdb-server-0.1-SNAPSHOT-jar-with-dependencies.jar:?]
linkahead | ... 73 more
occur if B.id < C.id
Imported comments:
By Florian Spreckelsen on 2020-08-18T07:32:12.867Z
Fixed by !16
By Quazgar on 2020-08-18T07:31:11.528Z
mentioned in commit 2de195e8
By Quazgar on 2020-08-17T15:33:49.711Z
mentioned in commit a9945872a8d6e82a2530d771519101fd3c920dab
By Quazgar on 2020-08-17T14:02:09.321Z
Actually it's call deleteIsa(132);
which triggers the error. (Which also makes a lot more sense.)
By Quazgar on 2020-08-17T13:58:35.952Z
Only happens if versioning is enabled during the call to delete
Steps to reproduce
import caosdb as db
db.Info()
A = db.RecordType(name="A")
A.insert()
B = db.RecordType(name="B")
B.insert()
A.add_parent(B)
A.update()
rec = db.Record(name="rec")
rec.add_parent(A)
rec.insert()
C = db.RecordType(name="C")
C.insert()
B.add_parent(C)
B.update()
rec.delete() # This fails.
Also failing on the SQL server is (using the ID of rec
):
call deleteEntityProperties(132);
By Quazgar on 2020-08-17T13:46:15.286Z
assigned to @quazgar and unassigned @timm.fitschen
By Florian Spreckelsen on 2020-08-17T13:05:03.550Z
changed the description