2015-10-15 15 views
0

我在OrientDB方案無類,讓我們說這叫做「TestClass的」,這是很簡單的,並含有1個布爾屬性:OrientDB:UPDATE查詢結果以分佈式模式

{ 
    lock : 'true' 
} 

當我執行更新通過控制檯或Web UI查詢:

update testClass set lock = true 

我有

Updated record(s) '1' in 0.033000 sec(s). 

從控制檯和類似的結果從網絡用戶界面。

同樣的結果,當我執行下面的Java代碼

ODatabaseDocumentTx db = ... // open db connection 
Object result = db.command(new OCommandSQL("update testClass set lock = true")).execute() 

的「結果」可變我所得到的是整數類型的,包含更新的記錄數。

但是當OrientDB服務器以分佈模式啓動時(我有3個節點),所有東西都會改變。從控制檯執行相同的查詢產生:

Updated record(s) '[null]' in 0.010000 sec(s). 

正如你所看到的,現在結果是一個數組,它是空的。我從Java獲得的一樣 - 'result'變量的類型是ArrayList,它是空的。 最有趣的結果顯示web ui - 當我執行相同的查詢時,我在'value'列中有'[1]',這意味着,結果是數組,它包含1個整數值'1' 。

它是一個功能或錯誤?我究竟做錯了什麼?

+0

我認爲這是由於在分佈式模式其實你拿到「減少」的結果,但對於一個未知原因在控制檯中無法正確管理。記錄是否更新? – Lvca

+0

是的,數據庫中的記錄已更新。對我來說最重要的是獲取更多的Java代碼記錄,因爲我試圖爲分佈式應用程序實現簡單的樂觀鎖。原始查詢是「update testClass set lock = true where lock = false」 – Tim

+0

這已在上一個2.1.x分支中修復。 – Lvca

回答