Hi Andrey, Thanks a lot for your answer. I will make sure to upgrade!
On Wednesday, September 23, 2015 at 6:33:56 PM UTC+8, Andrey Lomakin wrote: > > Hi, > This problem probably raised because of "cache optimization" issue. > We fixed it in 2.2 version. > > Also I will port it in 2.1 branch. > > On Wed, Sep 23, 2015 at 8:40 AM Jean-Sebastien Lemay < > [email protected] <javascript:>> wrote: > >> Through the Java API. Code simplified below. >> >> // Get reference to GraphDB module >> OrientGraph db = [...]; >> >> try { >> // Retrieve the channel vertex >> OrientVertex channelVtx = this.getVertex(db, >> KEY_CHANNEL_ID, >> channelId); >> >> // Retrieve the account vertex >> OrientVertex accountVtx = this.getVertex(db, >> KEY_ACCOUNT_ID, >> accountId); >> >> try { >> // Retrieve edge >> Edge edge = channelVtx.getEdges( >> accountVtx, >> Direction.OUT, >> EDGE_CHANNEL_ACTIVE_USER_ACCOUNT) >> .iterator().next(); >> >> // Remove edge >> db.removeEdge(edge); >> } >> catch (NoSuchElementException ex) { >> throw new DataNotFoundException(); >> } >> } >> catch (OException | DataNotFoundException ex) { >> [...] >> } >> >> >> >> >> >> On Wednesday, September 23, 2015 at 1:24:52 PM UTC+8, Enrico Risa wrote: >> >>> Hi Jean >>> >>> how do you remove edges between Channel and Account? >>> >>> >>> 2015-09-23 5:33 GMT+02:00 Jean-Sebastien Lemay <[email protected]> >>> : >>> >> Using OrientDB 2.1.1 Community Edition >>>> >>>> Situation: >>>> >>>> - I have "Channel" and "Account" vertices. >>>> - Users can join channels, and when they do, a >>>> "ChannelActiveUserAccount" edge is created between the two (from >>>> Channel to >>>> Account) >>>> - I'm trying to run queries to determine how many users are sitting >>>> in each channel, but I'm getting weird results >>>> >>>> In this instance, I know for a fact that I only have 1 user (#15:0) >>>> sitting in one of my 5 channels. See query below. >>>> >>>> >>>> >>>> >>>> *SELECT @rid, out("ChannelActiveUserAccount")FROM Channel* >>>> >>>> *rid out* >>>> *#31:0 []* >>>> *#31:1 []* >>>> *#31:2 #15:0* >>>> *#31:3 []* >>>> *#31:4 []* >>>> >>>> *{* >>>> * "result": [* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:0",* >>>> * "@version": 0,* >>>> * "rid": "#31:0",* >>>> * "out": [* >>>> >>>> * ],* >>>> * "@fieldTypes": "rid=x"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:1",* >>>> * "@version": 0,* >>>> * "rid": "#31:1",* >>>> * "out": [* >>>> >>>> * ],* >>>> * "@fieldTypes": "rid=x"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:2",* >>>> * "@version": 0,* >>>> * "rid": "#31:2",* >>>> * "out": [* >>>> * "#15:0"* >>>> * ],* >>>> * "@fieldTypes": "rid=x,out=z"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:3",* >>>> * "@version": 0,* >>>> * "rid": "#31:3",* >>>> * "out": [* >>>> >>>> * ],* >>>> * "@fieldTypes": "rid=x"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:4",* >>>> * "@version": 0,* >>>> * "rid": "#31:4",* >>>> * "out": [* >>>> >>>> * ],* >>>> * "@fieldTypes": "rid=x"* >>>> * }* >>>> * ],* >>>> * "notification": "Query executed in 0.02 sec. Returned 5 record(s)"* >>>> *}* >>>> >>>> ---------- >>>> >>>> However, if I decide to return the size of each array, to get a total >>>> instead, this happens. >>>> >>>> *SELECT * >>>> * @rid,* >>>> * out("ChannelActiveUserAccount").size()* >>>> *FROM Channel* >>>> >>>> *rid out* >>>> *#31:0 0* >>>> *#31:1 0* >>>> *#31:2 3* >>>> *#31:3 0* >>>> *#31:4 2* >>>> >>>> *{* >>>> * "result": [* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:0",* >>>> * "@version": 0,* >>>> * "rid": "#31:0",* >>>> * "out": 0,* >>>> * "@fieldTypes": "rid=x"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:1",* >>>> * "@version": 0,* >>>> * "rid": "#31:1",* >>>> * "out": 0,* >>>> * "@fieldTypes": "rid=x"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:2",* >>>> * "@version": 0,* >>>> * "rid": "#31:2",* >>>> * "out": 3,* >>>> * "@fieldTypes": "rid=x"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:3",* >>>> * "@version": 0,* >>>> * "rid": "#31:3",* >>>> * "out": 0,* >>>> * "@fieldTypes": "rid=x"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#-2:4",* >>>> * "@version": 0,* >>>> * "rid": "#31:4",* >>>> * "out": 2,* >>>> * "@fieldTypes": "rid=x"* >>>> * }* >>>> * ],* >>>> * "notification": "Query executed in 0.02 sec. Returned 5 record(s)"* >>>> *}* >>>> >>>> I'm not sure where the 3 and 2 are coming from. So I run another query >>>> below to see all the data. >>>> >>>> ---------- >>>> >>>> >>>> *SELECT FROM Channel* >>>> >>>> *@rid @class ChannelActiveUserAccount* >>>> *#31:0 Channel []* >>>> *#31:1 Channel []* >>>> *#31:2 Channel #70:100 #70:103 #70:119* >>>> *#31:3 Channel []* >>>> *#31:4 Channel #70:101 #70:102* >>>> >>>> *{* >>>> * "result": [* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#31:0",* >>>> * "@class": "Channel",* >>>> * "out_ChannelActiveUserAccount": [* >>>> >>>> * ],* >>>> * "@fieldTypes": "out_ChannelActiveUserAccount=g"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#31:1",* >>>> * "@class": "Channel",* >>>> * "out_ChannelActiveUserAccount": [* >>>> >>>> * ],* >>>> * "@fieldTypes": "out_ChannelActiveUserAccount=g"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#31:2",* >>>> * "@class": "Channel", * >>>> * "out_ChannelActiveUserAccount": [* >>>> * "#70:100",* >>>> * "#70:103",* >>>> * "#70:119"* >>>> * ], * >>>> * "@fieldTypes": "out_ChannelActiveUserAccount=g"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#31:3",* >>>> * "@class": "Channel", * >>>> * "out_ChannelActiveUserAccount": [* >>>> >>>> * ], * >>>> * "@fieldTypes": "out_ChannelActiveUserAccount=g"* >>>> * },* >>>> * {* >>>> * "@type": "d",* >>>> * "@rid": "#31:4",* >>>> * "@class": "Channel", * >>>> * "out_ChannelActiveUserAccount": [* >>>> * "#70:101",* >>>> * "#70:102"* >>>> * ], * >>>> * "@fieldTypes": "out_ChannelActiveUserAccount=g"* >>>> * }* >>>> * ],* >>>> * "notification": "Query executed in 0.026 sec. Returned 5 >>>> record(s)"* >>>> *}* >>>> >>>> Now this is where I get confused, because some of the edges listed >>>> above (such as #70:101 for example) refer to edges that no longer exist. >>>> How come they are still in the array somehow? How did they not disappear? >>>> >>>> ---------- >>>> >>>> If it helps, here's the database creation script: >>>> >>>> *CREATE CLASS Channel EXTENDS V;* >>>> *CREATE CLASS Account EXTENDS V;* >>>> >>>> *CREATE CLASS ChannelActiveUserAccount EXTENDS E;* >>>> >>>> *CREATE PROPERTY ChannelActiveUserAccount.out LINK Channel;* >>>> *CREATE PROPERTY ChannelActiveUserAccount.in LINK Account;* >>>> >>>> -- >>>> >>>> --- >>>> 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] <javascript:>. >> 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.
