Hi Manuel, How did you execute this command? What Driver/API? Lvc@
On 30 January 2015 at 15:29, Manuel Coutinho <[email protected]> wrote: > Just some more info: > > I'm updating a balance (decreasing the value of the balance) and need to > mark the movement as "processed" > > I tried this SQL command: " UPDATE #20:11 INCREMENT Balance = '-1000' ; > UPDATE #21:7 SET IsProcessed = 'true' " > > and the Balance might give an error since the minimum value is 0. > > The problem occurs when the Balance goes below 0, the first update fails > (as expected) but the second update is performed! > I guessed performing everything on the same SQL command would make it on > the same transaction but it doesn't. > > How can I perform these operations on the same transaction? > > Thank you and kind regards, > Manuel Coutinho > > > On Saturday, June 2, 2012 at 6:40:29 PM UTC+1, Salvatore Piccione wrote: > >> Hello, >> >> I've defined some tests on transactions (both Blueprints and Orient >> native ones) in order to verify if SQL statements are aware of the >> transaction context in which they are executed. >> You can find a test case about the execution of SQL INSERTs into an index >> and a class inside a transaction at https://gist.github.com/2859180. >> It seems that such SQL statements are not aware of the transaction scope >> defined in the code. In particular I found the following issues: >> >> - the graph element created through a SQL INSERT is not deleted when >> the transaction is rolled back >> - the SQL INSERT into an index doesn't work if the graph element to >> be added has been defined in a transaction by using Java API (it's got a >> temporary RID). In particular I get [1] if the vertex has been defined >> through Blueprints API while I get [2] if the vertex has been defined >> through native API. Additionally, I've discovered that: >> - if you use the Blueprints API to define the vertex, you get a >> temporary RID with the right cluster id (6 for Vertex and 7 for Edge) >> - if you use native graph API to define the vertex, you get a >> temporary RID with a temporary (i.e. negative) cluster id. This happens >> even passing the name of the class in the method >> OGraphDatabase.createVertex(). Any idea about this? >> >> I'd like to know if the SQL statement's unawareness of the transaction >> scope is a known issue or I did something wrong in mt code. At the moment, >> I'm forced to use only Java API to change (insert, modify and delete) my >> data inside a transaction to make transaction working fine. >> >> TIA, >> >> Salvatore >> >> [1] Stack trace got using Blueprints API >> com.orientechnologies.orient.core.exception.OCommandExecutionException: >> Error on execution of command: OCommandSQL [text=INSERT INTO >> index:aManualIdx(key,rid) VALUES (52,#6:-2)] >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >> Method) >> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown >> Source) >> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown >> Source) >> at java.lang.reflect.Constructor.newInstance(Unknown Source) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinary.createException(OChannelBinary.java:409) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinary.handleStatus(OChannelBinary.java:364) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:145) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:60) >> at com.orientechnologies.orient.client.remote.OStorageRemote. >> beginResponse(OStorageRemote.java:1492) >> at com.orientechnologies.orient.client.remote.OStorageRemote. >> command(OStorageRemote.java:703) >> at com.orientechnologies.orient.client.remote. >> OStorageRemoteThread.command(OStorageRemoteThread.java:191) >> at com.orientechnologies.orient.core.command. >> OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:60) >> at org.example.orientdb.TestIndexUsageInTransaction. >> testBlueprintsAPI(TestIndexUsageInTransaction.java:117) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >> at java.lang.reflect.Method.invoke(Unknown Source) >> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >> FrameworkMethod.java:45) >> at org.junit.internal.runners.model.ReflectiveCallable.run( >> ReflectiveCallable.java:15) >> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >> FrameworkMethod.java:42) >> at org.junit.internal.runners.statements.InvokeMethod. >> evaluate(InvokeMethod.java:20) >> at org.junit.internal.runners.statements.RunBefores. >> evaluate(RunBefores.java:28) >> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> BlockJUnit4ClassRunner.java:68) >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> BlockJUnit4ClassRunner.java:47) >> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) >> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) >> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) >> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) >> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) >> at org.junit.runners.ParentRunner.run(ParentRunner.java:300) >> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( >> JUnit4TestReference.java:50) >> at org.eclipse.jdt.internal.junit.runner.TestExecution. >> run(TestExecution.java:38) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> runTests(RemoteTestRunner.java:467) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> runTests(RemoteTestRunner.java:683) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> run(RemoteTestRunner.java:390) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> main(RemoteTestRunner.java:197) >> Caused by: java.lang.NullPointerException >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >> Method) >> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown >> Source) >> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown >> Source) >> at java.lang.reflect.Constructor.newInstance(Unknown Source) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinary.createException(OChannelBinary.java:411) >> ... 32 more >> >> [2] Stack trace got using native API >> com.orientechnologies.orient.core.exception.OCommandExecutionException: >> Error on execution of command: OCommandSQL [text=INSERT INTO >> index:aManualIdx(key,rid) VALUES (52,#-1:-1)] >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >> Method) >> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown >> Source) >> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown >> Source) >> at java.lang.reflect.Constructor.newInstance(Unknown Source) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinary.createException(OChannelBinary.java:409) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinary.handleStatus(OChannelBinary.java:364) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:145) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:60) >> at com.orientechnologies.orient.client.remote.OStorageRemote. >> beginResponse(OStorageRemote.java:1492) >> at com.orientechnologies.orient.client.remote.OStorageRemote. >> command(OStorageRemote.java:703) >> at com.orientechnologies.orient.client.remote. >> OStorageRemoteThread.command(OStorageRemoteThread.java:191) >> at com.orientechnologies.orient.core.command. >> OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:60) >> at org.example.orientdb.TestIndexUsageInTransaction.testNativeAPI( >> TestIndexUsageInTransaction.java:164) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >> at java.lang.reflect.Method.invoke(Unknown Source) >> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >> FrameworkMethod.java:45) >> at org.junit.internal.runners.model.ReflectiveCallable.run( >> ReflectiveCallable.java:15) >> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >> FrameworkMethod.java:42) >> at org.junit.internal.runners.statements.InvokeMethod. >> evaluate(InvokeMethod.java:20) >> at org.junit.internal.runners.statements.RunBefores. >> evaluate(RunBefores.java:28) >> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> BlockJUnit4ClassRunner.java:68) >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> BlockJUnit4ClassRunner.java:47) >> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) >> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) >> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) >> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) >> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) >> at org.junit.runners.ParentRunner.run(ParentRunner.java:300) >> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( >> JUnit4TestReference.java:50) >> at org.eclipse.jdt.internal.junit.runner.TestExecution. >> run(TestExecution.java:38) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> runTests(RemoteTestRunner.java:467) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> runTests(RemoteTestRunner.java:683) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> run(RemoteTestRunner.java:390) >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner. >> main(RemoteTestRunner.java:197) >> Caused by: java.lang.ClassCastException >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native >> Method) >> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown >> Source) >> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown >> Source) >> at java.lang.reflect.Constructor.newInstance(Unknown Source) >> at com.orientechnologies.orient.enterprise.channel.binary. >> OChannelBinary.createException(OChannelBinary.java:411) >> ... 32 more >> >> >> -- > > --- > You received this message because you are subscribed to the Google Groups > "OrientDB" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
