You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2013/03/12 14:01:07 UTC
svn commit: r1455518 -
/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/
Author: kahatlen
Date: Tue Mar 12 13:01:06 2013
New Revision: 1455518
URL: http://svn.apache.org/r1455518
Log:
DERBY-6075: Use modern collections in impl/sql/compile
Replace remaining Vectors with ArrayLists.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashJoinStrategy.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/PredicateList.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java Tue Mar 12 13:01:06 2013
@@ -76,7 +76,6 @@ import org.apache.derby.iapi.services.co
import org.apache.derby.iapi.util.ReuseFactory;
import java.sql.SQLWarning;
-import java.util.Vector;
import java.util.Properties;
import java.util.HashMap;
import java.util.Iterator;
@@ -332,7 +331,9 @@ public class CompilerContextImpl extends
}
public int addSavedObject(Object obj) {
- if (savedObjects == null) savedObjects = new Vector();
+ if (savedObjects == null) {
+ savedObjects = new ArrayList();
+ }
savedObjects.add(obj);
return savedObjects.size()-1;
@@ -442,28 +443,19 @@ public class CompilerContextImpl extends
public StoreCostController getStoreCostController(long conglomerateNumber)
throws StandardException
{
- /*
- ** Try to find the given conglomerate number in the array of
- ** conglom ids.
- */
- for (int i = 0; i < storeCostConglomIds.size(); i++)
- {
- Long conglomId = (Long) storeCostConglomIds.get(i);
- if (conglomId.longValue() == conglomerateNumber)
- return (StoreCostController) storeCostControllers.get(i);
- }
-
- /*
- ** Not found, so get a StoreCostController from the store.
- */
- StoreCostController retval =
- lcc.getTransactionCompile().openStoreCost(conglomerateNumber);
-
- /* Put it in the array */
- storeCostControllers.add(retval);
+ Long conglomNum = ReuseFactory.getLong(conglomerateNumber);
- /* Put the conglomerate number in its array */
- storeCostConglomIds.add(new Long(conglomerateNumber));
+ // Try to find the given conglomerate number among the already
+ // opened conglomerates.
+ StoreCostController retval = (StoreCostController)
+ storeCostControllers.get(conglomNum);
+
+ if (retval == null) {
+ // Not found, so get a StoreCostController from the store.
+ retval = lcc.getTransactionCompile()
+ .openStoreCost(conglomerateNumber);
+ storeCostControllers.put(conglomNum, retval);
+ }
return retval;
}
@@ -473,10 +465,10 @@ public class CompilerContextImpl extends
*/
private void closeStoreCostControllers()
{
- for (int i = 0; i < storeCostControllers.size(); i++)
+ Iterator it = storeCostControllers.values().iterator();
+ while (it.hasNext())
{
- StoreCostController scc =
- (StoreCostController) storeCostControllers.get(i);
+ StoreCostController scc = (StoreCostController) it.next();
try {
scc.close();
} catch (StandardException se) {
@@ -484,7 +476,6 @@ public class CompilerContextImpl extends
}
storeCostControllers.clear();
- storeCostConglomIds.clear();
}
/**
@@ -1035,8 +1026,11 @@ public class CompilerContextImpl extends
private ProviderList currentAPL;
private boolean returnParameterFlag;
- private final List storeCostControllers = new Vector();
- private final List storeCostConglomIds = new Vector();
+ /**
+ * Map that contains all store cost controllers opened in this compiler
+ * context. Conglomerate id (long) is the key.
+ */
+ private final HashMap storeCostControllers = new HashMap();
private SortCostController sortCostController;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DeleteNode.java Tue Mar 12 13:01:06 2013
@@ -57,7 +57,7 @@ import java.lang.reflect.Modifier;
import org.apache.derby.iapi.services.classfile.VMOpcode;
import org.apache.derby.iapi.services.io.FormatableProperties;
-import java.util.Vector;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -690,7 +690,7 @@ public class DeleteNode extends DMLModSt
boolean[] needsDeferredProcessing = new boolean[1];
needsDeferredProcessing[0] = requiresDeferredProcessing();
- Vector conglomVector = new Vector();
+ ArrayList conglomVector = new ArrayList();
relevantTriggers = new GenericDescriptorList();
FormatableBitSet columnMap = DeleteNode.getDeleteReadMap(baseTable,conglomVector, relevantTriggers, needsDeferredProcessing);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromList.java Tue Mar 12 13:01:06 2013
@@ -23,12 +23,9 @@ package org.apache.derby.impl.sql.compil
import org.apache.derby.iapi.services.sanity.SanityManager;
-import org.apache.derby.iapi.sql.compile.CompilerContext;
import org.apache.derby.iapi.sql.compile.Optimizable;
import org.apache.derby.iapi.sql.compile.OptimizableList;
import org.apache.derby.iapi.sql.compile.Optimizer;
-import org.apache.derby.iapi.sql.compile.Visitable;
-import org.apache.derby.iapi.sql.compile.Visitor;
import org.apache.derby.iapi.sql.compile.C_NodeTypes;
import org.apache.derby.iapi.sql.dictionary.DataDictionary;
@@ -38,11 +35,13 @@ import org.apache.derby.iapi.error.Stand
import org.apache.derby.iapi.reference.SQLState;
import org.apache.derby.iapi.util.JBitSet;
+import org.apache.derby.iapi.util.ReuseFactory;
import org.apache.derby.iapi.util.StringUtil;
+import java.util.ArrayList;
import java.util.Properties;
import java.util.Enumeration;
-import java.util.Vector;
+
/**
* A FromList represents the list of tables in a FROM clause in a DML
@@ -725,7 +724,7 @@ public class FromList extends QueryTreeN
throws StandardException
{
boolean flattened = true;
- Vector flattenedTableNumbers = new Vector();
+ ArrayList flattenedTableNumbers = new ArrayList();
if (SanityManager.DEBUG)
{
@@ -755,7 +754,8 @@ public class FromList extends QueryTreeN
ft.isFlattenableJoinNode())
{
//save the table number of the node to be flattened
- flattenedTableNumbers.add(new Integer(ft.getTableNumber()));
+ flattenedTableNumbers.add(
+ ReuseFactory.getInteger(ft.getTableNumber()));
/* Remove the node from the list and insert its
* FromList here.
@@ -799,7 +799,7 @@ public class FromList extends QueryTreeN
/* fix up dependency maps for exists base tables since they might have a
* dependency on this join node
*/
- if (flattenedTableNumbers.size() > 0)
+ if (!flattenedTableNumbers.isEmpty())
{
for (int i = 0; i < size(); i++)
{
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByNode.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/GroupByNode.java Tue Mar 12 13:01:06 2013
@@ -22,7 +22,6 @@
package org.apache.derby.impl.sql.compile;
import java.util.Iterator;
-import java.util.Vector;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
@@ -218,7 +217,7 @@ public class GroupByNode extends SingleC
}
if (index == glSize) {
- isInSortedOrder = childResult.isOrderedOn(crs, true, (Vector)null);
+ isInSortedOrder = childResult.isOrderedOn(crs, true, (List)null);
}
}
}
@@ -1246,10 +1245,14 @@ public class GroupByNode extends SingleC
/* See if the underlying ResultSet tree
* is ordered on the ColumnReference.
*/
- ColumnReference[] crs = new ColumnReference[1];
- crs[0] = (ColumnReference) an.getOperand();
-
- Vector tableVector = new Vector();
+ ColumnReference[] crs = {
+ (ColumnReference) an.getOperand()
+ };
+
+ // Holder list for the FromBaseTable. We expect no more
+ // than one table, hence initial capacity is 1.
+ ArrayList tableVector = new ArrayList(1);
+
boolean minMaxOptimizationPossible = isOrderedOn(crs, false, tableVector);
if (SanityManager.DEBUG)
{
@@ -1290,7 +1293,9 @@ public class GroupByNode extends SingleC
break;
}
}
- FromBaseTable fbt = (FromBaseTable)tableVector.firstElement();
+
+ FromBaseTable fbt =
+ (FromBaseTable) tableVector.get(0);
MaxMinAggregateDefinition temp = (MaxMinAggregateDefinition)ad;
/* MAX ASC NULLABLE
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashJoinStrategy.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashJoinStrategy.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashJoinStrategy.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashJoinStrategy.java Tue Mar 12 13:01:06 2013
@@ -21,6 +21,7 @@
package org.apache.derby.impl.sql.compile;
+import java.util.ArrayList;
import org.apache.derby.iapi.sql.compile.CostEstimate;
import org.apache.derby.iapi.sql.compile.ExpressionClassBuilderInterface;
import org.apache.derby.iapi.sql.compile.JoinStrategy;
@@ -49,8 +50,8 @@ import org.apache.derby.iapi.services.io
import org.apache.derby.iapi.services.io.FormatableIntHolder;
import org.apache.derby.iapi.util.JBitSet;
+import org.apache.derby.iapi.util.ReuseFactory;
-import java.util.Vector;
public class HashJoinStrategy extends BaseJoinStrategy {
public HashJoinStrategy() {
@@ -639,30 +640,29 @@ public class HashJoinStrategy extends Ba
}
}
- // Build a Vector of all the hash key columns
- int colCtr;
- Vector hashKeyVector = new Vector();
- for (colCtr = 0; colCtr < columns.length; colCtr++)
+ // Build a list of all the hash key columns
+ ArrayList hashKeys = new ArrayList();
+ for (int colCtr = 0; colCtr < columns.length; colCtr++)
{
// Is there an equijoin condition on this column?
if (predList.hasOptimizableEquijoin(innerTable, columns[colCtr]))
{
- hashKeyVector.add(new Integer(colCtr));
+ hashKeys.add(ReuseFactory.getInteger(colCtr));
}
}
- // Convert the Vector into an int[], if there are hash key columns
- if (hashKeyVector.size() > 0)
- {
- int[] keyCols = new int[hashKeyVector.size()];
- for (int index = 0; index < keyCols.length; index++)
- {
- keyCols[index] = ((Integer) hashKeyVector.get(index)).intValue();
- }
- return keyCols;
- }
- else
- return (int[]) null;
+ // Convert the list into an int[], if there are hash key columns
+ if (hashKeys.isEmpty())
+ {
+ return null;
+ }
+
+ int[] keyCols = new int[hashKeys.size()];
+ for (int index = 0; index < keyCols.length; index++)
+ {
+ keyCols[index] = ((Integer) hashKeys.get(index)).intValue();
+ }
+ return keyCols;
}
public String toString() {
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java Tue Mar 12 13:01:06 2013
@@ -43,10 +43,9 @@ import org.apache.derby.iapi.services.cl
import org.apache.derby.iapi.types.Like;
import java.sql.Types;
+import java.util.Arrays;
import java.util.List;
-import java.util.Vector;
-
/**
This node represents a like comparison operator (no escape)
@@ -869,17 +868,10 @@ public final class LikeEscapeOperatorNod
throws StandardException
{
- Vector param;
-
if (escapeNode != null)
{
- param = new Vector(2);
methodName += "WithEsc";
}
- else
- {
- param = new Vector(1);
- }
StaticMethodCallNode methodCall = (StaticMethodCallNode)
getNodeFactory().getNode(
@@ -891,18 +883,16 @@ public final class LikeEscapeOperatorNod
// using a method call directly, thus need internal sql capability
methodCall.internalCall = true;
- param.add(parameterNode);
- if (escapeNode != null)
- param.add(escapeNode);
-
QueryTreeNode maxWidthNode = (QueryTreeNode) getNodeFactory().getNode(
C_NodeTypes.INT_CONSTANT_NODE,
new Integer(maxWidth),
getContextManager());
- param.add(maxWidthNode);
- methodCall.addParms(param);
+ QueryTreeNode[] param = (escapeNode == null) ?
+ new QueryTreeNode[] { parameterNode, maxWidthNode } :
+ new QueryTreeNode[] { parameterNode, escapeNode, maxWidthNode };
+ methodCall.addParms(Arrays.asList(param));
ValueNode java2SQL =
(ValueNode) getNodeFactory().getNode(
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/PredicateList.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/PredicateList.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/PredicateList.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/PredicateList.java Tue Mar 12 13:01:06 2013
@@ -60,7 +60,6 @@ import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.Vector;
/**
* A PredicateList represents the list of top level predicates.
@@ -1948,7 +1947,7 @@ public class PredicateList extends Query
/* Put all of the join clauses that already have an equivalence
* class at the head of the outer list to optimize search.
*/
- Vector movePreds = new Vector();
+ ArrayList movePreds = new ArrayList();
for (int jcIndex = outerJCL.size() - 1; jcIndex >= 0; jcIndex--)
{
Predicate predicate = (Predicate) outerJCL.elementAt(jcIndex);
@@ -3873,7 +3872,7 @@ public class PredicateList extends Query
*--------------------------------------------------------------------*/
double selectivity = 1.0;
- Vector maxPreds = new Vector();
+ ArrayList maxPreds = new ArrayList();
while (true)
{
@@ -4099,23 +4098,16 @@ public class PredicateList extends Query
*/
private class PredicateWrapperList
{
- Vector pwList;
+ private final ArrayList pwList;
int numPreds;
int numDuplicates;
int weight;
PredicateWrapperList(int maxValue)
{
- pwList = new Vector(maxValue);
+ pwList = new ArrayList(maxValue);
}
- void removeElement(PredicateWrapper pw)
- {
- int index = pwList.indexOf(pw);
- if (index >= 0)
- removeElementAt(index);
- }
-
void removeElement(Predicate p)
{
for (int i = numPreds - 1; i >= 0; i--)
@@ -4178,11 +4170,9 @@ public class PredicateList extends Query
*/
void retainLeadingContiguous()
{
- if (pwList == null)
- return;
-
- if (pwList.size() == 0)
+ if (pwList.isEmpty()) {
return;
+ }
if (elementAt(0).getIndexPosition() != 0)
{
@@ -4224,8 +4214,6 @@ public class PredicateList extends Query
*/
private List createLeadingUnique()
{
- Vector scratch = new Vector();
-
if (numPreds == 0)
return null;
@@ -4234,6 +4222,7 @@ public class PredicateList extends Query
if (lastIndexPosition != 0)
return null;
+ ArrayList scratch = new ArrayList();
scratch.add(elementAt(0)); // always add 0.
for (int i = 1; i < numPreds; i++)
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/QueryTreeNodeVector.java Tue Mar 12 13:01:06 2013
@@ -21,24 +21,21 @@
package org.apache.derby.impl.sql.compile;
+import java.util.ArrayList;
import org.apache.derby.iapi.services.sanity.SanityManager;
-
import org.apache.derby.iapi.sql.compile.Visitor;
import org.apache.derby.iapi.error.StandardException;
-import java.util.List;
-import java.util.Vector;
-
/**
* QueryTreeNodeVector is the root class for all lists of query tree nodes.
- * It provides a wrapper for java.util.Vector. All
+ * It provides a wrapper for java.util.ArrayList. All
* lists of query tree nodes inherit from QueryTreeNodeVector.
*
*/
abstract class QueryTreeNodeVector extends QueryTreeNode
{
- private final List v = new Vector();
+ private final ArrayList v = new ArrayList();
public final int size()
{
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java?rev=1455518&r1=1455517&r2=1455518&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UpdateNode.java Tue Mar 12 13:01:06 2013
@@ -25,7 +25,6 @@ import org.apache.derby.catalog.DefaultI
import org.apache.derby.catalog.UUID;
import org.apache.derby.iapi.services.compiler.MethodBuilder;
-import org.apache.derby.impl.sql.compile.ActivationClassBuilder;
import org.apache.derby.iapi.sql.conn.Authorizer;
import org.apache.derby.iapi.sql.compile.C_NodeTypes;
import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
@@ -47,11 +46,7 @@ import org.apache.derby.iapi.sql.diction
import org.apache.derby.iapi.reference.SQLState;
import org.apache.derby.iapi.sql.execute.ConstantAction;
-import org.apache.derby.iapi.sql.execute.CursorResultSet;
import org.apache.derby.iapi.sql.execute.ExecPreparedStatement;
-import org.apache.derby.iapi.sql.execute.ExecRow;
-
-import org.apache.derby.iapi.sql.ResultSet;
import org.apache.derby.iapi.sql.StatementType;
import org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo;
@@ -66,9 +61,10 @@ import org.apache.derby.iapi.util.ReuseF
import org.apache.derby.iapi.services.classfile.VMOpcode;
import java.lang.reflect.Modifier;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.Vector;
+import java.util.List;
/**
* An UpdateNode represents an UPDATE statement. It is the top node of the
@@ -892,7 +888,7 @@ public final class UpdateNode extends DM
boolean[] needsDeferredProcessing = new boolean[1];
needsDeferredProcessing[0] = requiresDeferredProcessing();
- Vector conglomVector = new Vector();
+ ArrayList conglomVector = new ArrayList();
relevantCdl = new ConstraintDescriptorList();
relevantTriggers = new GenericDescriptorList();
@@ -993,7 +989,7 @@ public final class UpdateNode extends DM
DataDictionary dd,
TableDescriptor baseTable,
ResultColumnList updateColumnList,
- Vector conglomVector,
+ List conglomVector,
ConstraintDescriptorList relevantConstraints,
GenericDescriptorList relevantTriggers,
boolean[] needsDeferredProcessing,