[ 
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

        

Reply via email to