Hi folks,

Just ran into an obscure and minor but at the same time fundamental bug - 
Cayenne generated unneeded updates when the only change is BidDecimal value 
scale [1]. Essentially for BigDecimals we shouldn't be calling "a.equals(b)" 
but use "a.compareTo(b) == 0". I have a fix [2], but using "instanceof" inside 
a common performance-sensitive code feels dirty. I'd much rather a comparison 
strategy to be a part of the PropertyDescriptor object or something. So not 
applying the PR just yet.

Wanted to mention it here. Perhaps there are other data types that can't use 
"equals" for some reason. And perhaps there are other solutions to this problem 
too...

Andrus

[1] https://issues.apache.org/jira/browse/CAY-2660
[2] https://github.com/apache/cayenne/pull/426

Reply via email to