From: John V. S. <js...@lu...> - 2007-05-19 02:19:29
|
[cc'ing farrago-dev] I logged the first two findings below for me as FRG-270, and the last one for Rushan as LDB-162. People complain about operator overloading in C++, but in the last case below, due to JDK 1.5 autounboxing, we have a situation where (colSel1 < colSel2) means compare by value, whereas (colSel1 == colSel2) means compare by reference, for the same colSel1 and colSel2! Sheesh. JVS Boris Chen wrote: > Findbugs works fairly well, but so far, only as ad hoc. Havent' had the time to work on getting it to be a repeatably used thing with maintained excludes, etc. Removal of warnings in general would be nice > > > Hmm. still can't find what zelaine described, but here are 3 other instances of comparisons by reference > > > > //open/lu/dev/farrago/src/org/eigenbase/jmi/JmiChangeSet.java > // Avoid unnecessary updates in the case where ordinals > // are already correct. > if (oldOrdinal != newOrdinal) { > target.refSetValue("ordinal", newOrdinal); > } > } > } > } > > //open/lu/dev/farrago/src/net/sf/farrago/ddl/DdlValidator.java > { > stmtValidator.setParserPosition(null); > if (action == VALIDATE_CREATION) { > return invokeHandler(modelElement, "validateDefinition"); > } else if (action == VALIDATE_MODIFICATION) { > return invokeHandler(modelElement, "validateModification"); > } else if (action == VALIDATE_DELETION) { > return invokeHandler(modelElement, "validateDrop"); > } else if (action == VALIDATE_TRUNCATION) { > return invokeHandler(modelElement, "validateTruncation"); > } else { > throw new AssertionError(); > } > > > > //open/lu/dev/farrago/src/com/lucidera/lcs/LcsIndexOptimizer.java > public int compare(SargColumnFilter filter1, SargColumnFilter filter2) > { > // sort based on the selectivity if stats are available; otherwise, > // just sort on column number to ensure that results are > // deterministic > Double colSel1 = filter1.getSelectivity(tabStats); > Double colSel2 = filter2.getSelectivity(tabStats); > if (colSel1 != null && colSel2 != null) { > return > (colSel1 < colSel2) ? -1 : > ((colSel1 == colSel2) ? 0 : 1); > } else { > return (filter1.columnPos - filter2.columnPos); > } > } > > } |