Home » Modeling » EMF » [CDO] CDOFeatureDelta => ADD with null
[CDO] CDOFeatureDelta => ADD with null [message #529631] |
Mon, 26 April 2010 15:12 |
Cyril Jaquier Messages: 80 Registered: July 2009 |
Member |
|
|
Hi all,
In a test case I have the following code:
data1.getHeartbeatMap().put("AAR1", heartbeat);
data1.getHeartbeatMap().remove("AAR1");
commit();
CDO generates the following feature deltas:
[CDORevisionDelta[ScenarioData@OID298:0v1 -->
[CDOFeatureDelta[heartbeatMap, LIST, list=[CDOFeatureDelta[heartbeatMap,
ADD, value=NULL, index=0], CDOFeatureDelta[heartbeatMap, REMOVE,
value=UNKNOWN, index=0]]]]]]
Notice the "value=NULL" for the ADD. Is this a bug in CDO or the
expected behaviour? I think (I've not tested) that in this case, 2
notifications whould be generated, one ADD with null and one REMOVE. I
would have expected either ADD with a value (e.g. heartbeat in this
case) or no notification at all.
Moreover, when doing this:
data1.getHeartbeatMap().put("AAR1", heartbeat);
data1.getHeartbeatMap().remove("AAR1");
data1.getHeartbeatMap().put("AAR1", heartbeat);
data1.getHeartbeatMap().remove("AAR1");
data1.getHeartbeatMap().put("AAR1", heartbeat);
data1.getHeartbeatMap().remove("AAR1");
data1.getHeartbeatMap().put("AAR1", heartbeat);
data1.getHeartbeatMap().remove("AAR1");
data1.getHeartbeatMap().put("AAR1", heartbeat);
data1.getHeartbeatMap().remove("AAR1");
data1.getHeartbeatMap().put("AAR1", heartbeat);
data1.getHeartbeatMap().remove("AAR1");
commit();
CDO generates the following feature deltas:
[CDORevisionDelta[ScenarioData@OID1586:0v1 -->
[CDOFeatureDelta[heartbeatMap, LIST, list=[CDOFeatureDelta[heartbeatMap,
ADD, value=NULL, index=0], CDOFeatureDelta[heartbeatMap, REMOVE,
value=UNKNOWN, index=0], CDOFeatureDelta[heartbeatMap, ADD, value=NULL,
index=0], CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0]]]]]]
Can't CDO optimize this? How is this handled at the database level?
Thank you.
Cheers,
Cyril
|
|
|
Re: [CDO] CDOFeatureDelta => ADD with null [message #529680 is a reply to message #529631] |
Mon, 26 April 2010 17:56 |
|
Hi Cyril,
This is certainly not good. No harm is done to the database though. If
you file a bugzilla we can look into optimizing this. Thanks for
pointing this out.
Cheers
/Eike
----
http://thegordian.blogspot.com
http://twitter.com/eikestepper
Am 26.04.2010 17:12, schrieb Cyril Jaquier:
> Hi all,
>
> In a test case I have the following code:
>
> data1.getHeartbeatMap().put("AAR1", heartbeat);
> data1.getHeartbeatMap().remove("AAR1");
> commit();
>
> CDO generates the following feature deltas:
>
> [CDORevisionDelta[ScenarioData@OID298:0v1 -->
> [CDOFeatureDelta[heartbeatMap, LIST,
> list=[CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
> CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0]]]]]]
>
> Notice the "value=NULL" for the ADD. Is this a bug in CDO or the
> expected behaviour? I think (I've not tested) that in this case, 2
> notifications whould be generated, one ADD with null and one REMOVE. I
> would have expected either ADD with a value (e.g. heartbeat in this
> case) or no notification at all.
>
> Moreover, when doing this:
>
> data1.getHeartbeatMap().put("AAR1", heartbeat);
> data1.getHeartbeatMap().remove("AAR1");
> data1.getHeartbeatMap().put("AAR1", heartbeat);
> data1.getHeartbeatMap().remove("AAR1");
> data1.getHeartbeatMap().put("AAR1", heartbeat);
> data1.getHeartbeatMap().remove("AAR1");
> data1.getHeartbeatMap().put("AAR1", heartbeat);
> data1.getHeartbeatMap().remove("AAR1");
> data1.getHeartbeatMap().put("AAR1", heartbeat);
> data1.getHeartbeatMap().remove("AAR1");
> data1.getHeartbeatMap().put("AAR1", heartbeat);
> data1.getHeartbeatMap().remove("AAR1");
> commit();
>
> CDO generates the following feature deltas:
>
> [CDORevisionDelta[ScenarioData@OID1586:0v1 -->
> [CDOFeatureDelta[heartbeatMap, LIST,
> list=[CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
> CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
> CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
> CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
> CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
> CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
> CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
> CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
> CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
> CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0],
> CDOFeatureDelta[heartbeatMap, ADD, value=NULL, index=0],
> CDOFeatureDelta[heartbeatMap, REMOVE, value=UNKNOWN, index=0]]]]]]
>
> Can't CDO optimize this? How is this handled at the database level?
>
> Thank you.
>
> Cheers,
> Cyril
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
| | | | |
Goto Forum:
Current Time: Fri Apr 26 09:31:16 GMT 2024
Powered by FUDForum. Page generated in 0.02844 seconds
|