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 rh...@apache.org on 2013/08/02 14:46:54 UTC
svn commit: r1509671 - in /db/derby/code/trunk/java/engine/org/apache/derby:
iapi/sql/compile/ impl/sql/compile/
Author: rhillegas
Date: Fri Aug 2 12:46:53 2013
New Revision: 1509671
URL: http://svn.apache.org/r1509671
Log:
DERBY-6211: Don't instantiate new optimizers just to create empty CostEstimate objects; commit derby-6211-10-aa-makingCostEstimateObject.diff.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizer.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/OptimizerFactory.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentOfNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DistinctNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromTable.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/OptimizerFactoryImpl.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerImpl.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizer.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizer.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizer.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizer.java Fri Aug 2 12:46:53 2013
@@ -188,9 +188,6 @@ public interface Optimizer
*/
public void modifyAccessPaths() throws StandardException;
- /** Get a new CostEstimate object */
- public CostEstimate newCostEstimate();
-
/** Get the trace machinery */
public OptTrace tracer();
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/OptimizerFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/OptimizerFactory.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/OptimizerFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/OptimizerFactory.java Fri Aug 2 12:46:53 2013
@@ -72,8 +72,7 @@ public interface OptimizerFactory {
*
* @exception StandardException Thrown on error
*/
- public CostEstimate getCostEstimate()
- throws StandardException;
+ public CostEstimate getCostEstimate();
/**
* Return whether or not the optimizer associated with
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentOfNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentOfNode.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentOfNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentOfNode.java Fri Aug 2 12:46:53 2013
@@ -109,7 +109,7 @@ public final class CurrentOfNode extends
*/
if (singleScanCostEstimate == null)
{
- singleScanCostEstimate = optimizer.newCostEstimate();
+ singleScanCostEstimate = getOptimizerFactory().getCostEstimate();
}
singleScanCostEstimate.setCost(0.0d, 1.0d, 1.0d);
@@ -389,20 +389,10 @@ public final class CurrentOfNode extends
ResultSetNode optimize(DataDictionary dataDictionary,
PredicateList predicateList,
double outerRows)
- throws StandardException {
- /* Get an optimizer so we can get a cost */
- Optimizer opt =
- getOptimizer(new FromList(
- getOptimizerFactory().doJoinOrderOptimization(),
- this,
- getContextManager()),
- predicateList,
- dataDictionary,
- (RequiredRowOrdering) null,
- null );
-
+ throws StandardException
+ {
/* Assume there is no cost associated with fetching the current row */
- bestCostEstimate = opt.newCostEstimate();
+ bestCostEstimate = getOptimizerFactory().getCostEstimate();
bestCostEstimate.setCost(0.0d, outerRows, outerRows);
return this;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DistinctNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DistinctNode.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DistinctNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DistinctNode.java Fri Aug 2 12:46:53 2013
@@ -212,19 +212,10 @@ class DistinctNode extends SingleChildRe
childResult = childResult.optimize(dataDictionary,
predicates,
outerRows);
- Optimizer opt = getOptimizer(
- new FromList(
- getOptimizerFactory().doJoinOrderOptimization(),
- this,
- getContextManager()),
- predicates,
- dataDictionary,
- (RequiredRowOrdering) null,
- null );
// RESOLVE: NEED TO FACTOR IN COST OF SORTING AND FIGURE OUT HOW
// MANY ROWS HAVE BEEN ELIMINATED.
- costEstimate = opt.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
costEstimate.setCost(childResult.getCostEstimate().getEstimatedCost(),
childResult.getCostEstimate().rowCount(),
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromTable.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromTable.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromTable.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromTable.java Fri Aug 2 12:46:53 2013
@@ -1029,7 +1029,7 @@ abstract class FromTable extends ResultS
{
if (costEstimate == null)
{
- costEstimate = optimizer.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
}
return costEstimate;
}
@@ -1045,7 +1045,7 @@ abstract class FromTable extends ResultS
{
if (scratchCostEstimate == null)
{
- scratchCostEstimate = optimizer.newCostEstimate();
+ scratchCostEstimate = getOptimizerFactory().getCostEstimate();
}
return scratchCostEstimate;
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=1509671&r1=1509670&r2=1509671&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 Fri Aug 2 12:46:53 2013
@@ -936,17 +936,10 @@ class GroupByNode extends SingleChildRes
childResult = childResult.optimize(dataDictionary,
predicates,
outerRows);
- Optimizer opt = getOptimizer(
- new FromList(getOptimizerFactory().doJoinOrderOptimization(),
- getContextManager()),
- predicates,
- dataDictionary,
- (RequiredRowOrdering) null,
- null );
// RESOLVE: NEED TO FACTOR IN COST OF SORTING AND FIGURE OUT HOW
// MANY ROWS HAVE BEEN ELIMINATED.
- costEstimate = opt.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
costEstimate.setCost(childResult.getCostEstimate().getEstimatedCost(),
childResult.getCostEstimate().rowCount(),
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerFactoryImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerFactoryImpl.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerFactoryImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerFactoryImpl.java Fri Aug 2 12:46:53 2013
@@ -178,7 +178,6 @@ public class OptimizerFactoryImpl
* @exception StandardException Thrown on error
*/
public CostEstimate getCostEstimate()
- throws StandardException
{
return new CostEstimateImpl();
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerImpl.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/OptimizerImpl.java Fri Aug 2 12:46:53 2013
@@ -2516,8 +2516,7 @@ class OptimizerImpl implements Optimizer
}
}
- /** @see Optimizer#newCostEstimate */
- public CostEstimate newCostEstimate()
+ private CostEstimate newCostEstimate()
{
return new CostEstimateImpl();
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ProjectRestrictNode.java Fri Aug 2 12:46:53 2013
@@ -1209,19 +1209,9 @@ class ProjectRestrictNode extends Single
restrictionList,
outerRows);
- Optimizer opt = getOptimizer(
- new FromList(
- getOptimizerFactory().doJoinOrderOptimization(),
- this,
- getContextManager()),
- predicates,
- dataDictionary,
- (RequiredRowOrdering) null,
- null );
-
// RESOLVE: SHOULD FACTOR IN THE NON-OPTIMIZABLE PREDICATES THAT
// WERE NOT PUSHED DOWN
- costEstimate = opt.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
costEstimate.setCost(childResult.getCostEstimate().getEstimatedCost(),
childResult.getCostEstimate().rowCount(),
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowResultSetNode.java Fri Aug 2 12:46:53 2013
@@ -178,7 +178,7 @@ class RowResultSetNode extends FromTable
*/
if (costEstimate == null)
{
- costEstimate = optimizer.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
}
costEstimate.setCost(0.0d, 1.0d, 1.0d);
@@ -623,15 +623,7 @@ class RowResultSetNode extends FromTable
** CostEstimate object, so we can represent the cost of this node.
** This seems like overkill, but it's just an object allocation...
*/
- Optimizer opt = getOptimizer(
- new FromList(getOptimizerFactory().doJoinOrderOptimization(),
- getContextManager()),
- predicateList,
- dataDictionary,
- (RequiredRowOrdering) null,
- null );
-
- costEstimate = opt.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
// RESOLVE: THE COST SHOULD TAKE SUBQUERIES INTO ACCOUNT
costEstimate.setCost(0.0d, outerRows, outerRows);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SingleChildResultSetNode.java Fri Aug 2 12:46:53 2013
@@ -402,15 +402,7 @@ abstract class SingleChildResultSetNode
predicates,
outerRows);
- Optimizer opt = getOptimizer(
- new FromList(getOptimizerFactory().doJoinOrderOptimization(),
- getContextManager()),
- predicates,
- dataDictionary,
- (RequiredRowOrdering) null,
- null );
-
- costEstimate = opt.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
costEstimate.setCost(childResult.getCostEstimate().getEstimatedCost(),
childResult.getCostEstimate().rowCount(),
childResult.getCostEstimate().singleScanRowCount());
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableOperatorNode.java Fri Aug 2 12:46:53 2013
@@ -687,17 +687,7 @@ abstract class TableOperatorNode extends
double outerRows)
throws StandardException
{
- /* Get an optimizer, so we can get a cost structure */
- Optimizer opt = getOptimizer(
- new FromList(getOptimizerFactory().doJoinOrderOptimization(),
- this,
- getContextManager()),
- predicateList,
- dataDictionary,
- (RequiredRowOrdering) null,
- null );
-
- costEstimate = opt.newCostEstimate();
+ costEstimate = getOptimizerFactory().getCostEstimate();
/* RESOLVE: This is just a stub for now */
leftResultSet = leftResultSet.optimize(
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java?rev=1509671&r1=1509670&r2=1509671&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/XMLOptTrace.java Fri Aug 2 12:46:53 2013
@@ -519,7 +519,9 @@ class XMLOptTrace implements OptTrace
}
else if ( isFromTable( optimizable ) )
{
- return ((FromTable) ((ProjectRestrictNode) optimizable).getChildResult()).getTableName();
+ TableName retval = ((FromTable) ((ProjectRestrictNode) optimizable).getChildResult()).getTableName();
+
+ if ( retval != null ) { return retval; }
}
}
catch (StandardException e)