[
https://issues.apache.org/jira/browse/DERBY-6075?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-6075:
--------------------------------------
Attachment: d6075-4a-parameterList.diff
The attached 4a patch changes the signatures of
CompilerContext.setParameterList(Vector), CompilerContext.getParameterList()
and ResultColumnList.bindExpressions(FromList, SubqueryList, Vector), and of
overriding methods, so that they use List instead of Vector. It also changes
signatures of methods called from these methods, as they must also accept List.
Most of the affected code already used the List interface methods. Only a
single call to Vector.copyInto() had to be changed to List.toArray(). I also
took the opportunity to change a few occurrences of size() == 0 to isEmpty().
The patch does not change the actual type of the objects passed to these
methods. They are still of type java.util.Vector.
All the regression tests passed.
> Use modern collections in impl/sql/compile
> ------------------------------------------
>
> Key: DERBY-6075
> URL: https://issues.apache.org/jira/browse/DERBY-6075
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.10.0.0
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Priority: Minor
> Attachments: d6075-1a-CollectNodesVisitor.diff,
> d6075-2a-bindExpression.diff, d6075-3a-javadoc.diff,
> d6075-4a-parameterList.diff
>
>
> The code in the org.apache.derby.impl.sql.compile package predates the Java
> Collections Framework and uses old-style collections like java.util.Vector
> and java.util.Hashtable. Since the old-style collection classes are used in
> many method signatures, it's difficult to use modern collection classes when
> adding new code.
> I suggest we switch to using interfaces (like java.util.List and
> java.util.Map) instead of specific classes in the signatures, so that we have
> more flexibility in choosing the right collection class for the job.
> Only changing the signatures would allow us to continue using Vector and
> Hashtable, since they implement the interfaces. However, I think it would be
> good to switch to ArrayList and HashMap in a second step. The instances in
> impl/sql/compile are not shared between threads, so we don't need the
> synchronization provided by the old-style classes. Switching to
> unsynchronized classes may make compilation slightly faster.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira