[
https://issues.apache.org/jira/browse/DERBY-5755?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-5755:
--------------------------------------
Attachment: d5755-1b.diff
Hi Dag,
You're right that the interface (DataDictionary) allows for returning lists
with more than one element, so the callers still need to account for that
possibility, even though the specific implementation (DataDictionaryImpl) says
in its javadoc that it always returns 0 or 1.
As to the possibility of masking errors, you're right that the patch would mask
duplicates in the SYSFUN_FUNCTIONS array, but it would not change anything for
routines looked up in the catalogs, as the signature of getAliasDescriptor()
guarantees that no more than one descriptor is returned. I'm not sure if we'll
ever want to add duplicate names in SYSFUN_FUNCTIONS, but it might make sense
to preserve the current code's readiness for it.
What about this alternative patch (1b)? It makes the following changes:
- remove the early termination of the loop that the 1a patch introduced
- still collect results into an ArrayList, but only for SYSFUN_FUNCTIONS
- use Collections.EMPTY_LIST and Collection.singletonList(), but only for the
descriptors fetched from the catalog, which are known at compile-time to be
exactly 0 or 1
> Minor cleanup of DataDictionaryImpl.getRoutineList()
> ----------------------------------------------------
>
> Key: DERBY-5755
> URL: https://issues.apache.org/jira/browse/DERBY-5755
> Project: Derby
> Issue Type: Improvement
> Components: SQL
> Affects Versions: 10.9.0.0
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Priority: Trivial
> Attachments: d5755-1a.diff, d5755-1b.diff
>
>
> I noticed two small possibilities for improvement in
> DataDictionaryImpl.getRoutineList() when I worked on DERBY-5730:
> - The method always returns a list of one or zero items. Instead of creating
> an ArrayList, it should use Collections.singletonList() and
> Collections.EMPTY_LIST, which are more memory-efficient.
> - It loops through the entire SYSFUN_FUNCTIONS array, even if the matching
> function is found in the first cell of the array. It should break out of the
> loop once a match is found.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira