Oh, that's great, thanks for the explaination.

is there any API in the java library that supports retries for save() (of a 
certain exception eg. ConcurrentModificationException)? something like this 
will be handle but i guess you will need to query back the same document 
before retrying the save.
https://developers.google.com/appengine/docs/java/datastore/transactions#Java_Uses_for_transactions

Will be useful if that's in the default orientdb library

On Friday, 3 January 2014 22:02:33 UTC+8, Andrey Lomakin wrote:
>
> All document changes are atomic.
>
> So if you save single document , changes either applied or not, you do not 
> need transaction for this kind of behavior.
> It does not matter whether you use SQL or Java.
>
> You provided example with  INCREMENT so I thought that may be you want to 
> increment field without throwing CME, by simple addition of value to latest 
> field value.
> And if you catch ConcurentModificationException you should reload record 
> and try again.
>
>
>
> On Fri, Jan 3, 2014 at 2:30 PM, Leng Sheng Hong 
> <[email protected]<javascript:>
> > wrote:
>
>> Does it mean that if I save() something without callInRecordLock (but i 
>> am using plocal).
>> I will have to do it in a transaction?
>> If i am saving 2 fields, using
>> doc.fields("title", "texthere");
>> doc.fields("quantity", doc.fields("quantity") + 100 )  //atomic
>> doc.save()
>>
>> I think it should be done in a transaction if concurrent modification 
>> exception occured, i will have to reload the document and try saving again?
>>
>> Is that the same behaviour to
>> Update MyTable INCREMENT quantity = 100, set title = "texthere" where 
>> @rid = #21:1
>>
>>
>> On Friday, 3 January 2014 20:14:29 UTC+8, Andrey Lomakin wrote:
>>
>>> Hi,
>>> What do you mean when write about atomic ? increment without  concurrent 
>>> modification exception ?
>>> If you use embedded storage you can lock records on storage level , and 
>>> then release them. 
>>>
>>> You may use 
>>> com.orientechnologies.orient.core.storage.OStorage#callInRecordLock 
>>> but please use it with care, to avoid deadlocks.
>>>
>>>
>>>
>>>
>>> On Fri, Jan 3, 2014 at 12:48 PM, Leng Sheng Hong <[email protected]>wrote:
>>>
>>>> How do you do a SQL like this in Java api for a document base DB?
>>>> Update MyTable INCREMENT quantity = 100 where @rid = #21:1
>>>>
>>>> I doubt setting fields and save() is actually atomic?
>>>> doc.fields("quantity", doc.fields("quantity") + 100 )
>>>> doc.save()
>>>>
>>>>  -- 
>>>>  
>>>> --- 
>>>> 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/groups/opt_out.
>>>>
>>>
>>>
>>>
>>> -- 
>>> Best regards,
>>> Andrey Lomakin.
>>>
>>> Orient Technologies
>>> the Company behind OrientDB
>>>
>>>   -- 
>>  
>> --- 
>> 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] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
>
> -- 
> Best regards,
> Andrey Lomakin.
>
> Orient Technologies
> the Company behind OrientDB
>
>  

-- 

--- 
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/groups/opt_out.

Reply via email to