db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-5755) Minor cleanup of DataDictionaryImpl.getRoutineList()
Date Fri, 11 May 2012 09:23:52 GMT

     [ 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:
>            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


View raw message