[
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-7a-more-signatures.diff
Attaching d6075-7a-more-signatures.diff, which changes the rest of the fields
and methods (that I could find) in the impl/sql/compile package to use List
instead of Vector.
Apart from the pure signature changes, the patch changes some occurrences of:
- Vector.copyInto() -> List.toArray()
- Vector.elementAt() -> List.get()
- Vector.addElement() -> List.add()
- Enumerator -> Iterator
- size() == 0 -> isEmpty()
The Enumerator that's changed to an Iterator walks a Vector that's created by
the parser and never modified after it leaves the parser, so switching to
Iterator should not create a risk for ConcurrentModificationExceptions.
The patch does not change any Vector instances to ArrayLists. It changes the
signatures only.
> 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, d6075-5a-ordering.diff,
> d6075-6a-DMLModStatementNode.diff, d6075-7a-more-signatures.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