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 ba...@apache.org on 2006/01/17 02:11:11 UTC
svn commit: r369619 [1/4] - in /db/derby/code/trunk/java:
engine/org/apache/derby/iapi/reference/
engine/org/apache/derby/iapi/sql/compile/
engine/org/apache/derby/iapi/sql/execute/
engine/org/apache/derby/impl/sql/compile/ engine/org/apache/derby/impl...
Author: bandaram
Date: Mon Jan 16 17:10:52 2006
New Revision: 369619
URL: http://svn.apache.org/viewcvs?rev=369619&view=rev
Log:
DERBY-573: Enhance RUNSTAT output to show user specified optimizer hints are bing used.
Here is the checkin message from the contributor:
I have attached a patch named Derby573OptimizerOverridesAndRunTimeStatistics011206.txt to JIRA Derby573 Provide support for optimizer overrides in Derby. This patch enables users to see the optimizer overrides specified in the sql as part of runtime statistics info. This is achieved by changing the
generator so that these properties get passed from compile time to execute time. This change in generate phase can be found in FromBaseTable,
BaseJoinStrategy and JoinNode. The changes in the other classes is for returning the correct number of arguments to the scan. That change is in
getScanArgs method.
In addition, I have changed the existing lang/optimizerOverrides.sql to test this patch. derbyall suite has run fine on my Windows XP m/c with Sun's jdk14.
Submitted by Mamta Satoor (msatoor@google.com)
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/SQLState.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizable.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/execute/ResultSetFactory.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseJoinStrategy.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HalfOuterJoinNode.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/JoinNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NestedLoopJoinStrategy.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BulkTableScanResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DependentResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DistinctScanResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericResultSetFactory.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashJoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashLeftOuterJoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashScanResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/JoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/LastIndexKeyResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RealResultSetStatisticsFactory.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TableScanResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashJoinStatistics.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashLeftOuterJoinStatistics.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealJoinResultSetStatistics.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopJoinStatistics.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopLeftOuterJoinStatistics.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealTableScanStatistics.java
db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/optimizerOverrides.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/optimizerOverrides.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/optimizerOverrides.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/optimizerOverrides.sql
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/SQLState.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/SQLState.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/SQLState.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/SQLState.java Mon Jan 16 17:10:52 2006
@@ -1153,6 +1153,8 @@
String RTS_REFACTION_DEPENDENT = "43Y53.U";
String RTS_BEGIN_DEPENDENT_NUMBER = "43Y54.U";
String RTS_END_DEPENDENT_NUMBER = "43Y55.U";
+ String RTS_USER_SUPPLIED_OPTIMIZER_OVERRIDES_FOR_TABLE = "43Y56.U";
+ String RTS_USER_SUPPLIED_OPTIMIZER_OVERRIDES_FOR_JOIN = "43Y57.U";
// org.apache.derby.catalog.types
String TI_SQL_TYPE_NAME = "44X00.U";
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizable.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizable.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizable.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/Optimizable.java Mon Jan 16 17:10:52 2006
@@ -182,7 +182,7 @@
public boolean isCoveringIndex(ConglomerateDescriptor cd) throws StandardException;
/**
- * Get the Properties list, if any, associated with this optimizalbe.
+ * Get the Properties list, if any, associated with this optimizable.
*
* @return The Properties list, if any, associated with this optimizable.
*/
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/execute/ResultSetFactory.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/execute/ResultSetFactory.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/execute/ResultSetFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/execute/ResultSetFactory.java Mon Jan 16 17:10:52 2006
@@ -739,7 +739,8 @@
@param loadFactor The loadFactor for the HashTable.
@param maxCapacity The maximum size for the HashTable.
@param hashKeyColumn The 0-based column # for the hash key.
- @param tableName The full name of the table
+ @param tableName The full name of the table
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param indexName The name of the index, if one used to access table.
@param isConstraint If index, if used, is a backing index for a constraint.
@param forUpdate True means open for update
@@ -777,6 +778,7 @@
int maxCapacity,
int hashKeyColumn,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -807,6 +809,7 @@
@param resultSetNumber The resultSetNumber for the ResultSet
@param hashKeyColumn The 0-based column # for the hash key.
@param tableName The full name of the table
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param indexName The name of the index, if one used to access table.
@param isConstraint If index, if used, is a backing index for a constraint.
@param colRefItem An saved item for a bitSet of columns that
@@ -833,6 +836,7 @@
int resultSetNumber,
int hashKeyColumn,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
int colRefItem,
@@ -886,6 +890,7 @@
@param qualifiers the array of Qualifiers for the scan.
Null or an array length of zero means there are no qualifiers.
@param tableName The full name of the table
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param indexName The name of the index, if one used to access table.
@param isConstraint If index, if used, is a backing index for a constraint.
@param forUpdate True means open for update
@@ -920,6 +925,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -976,6 +982,7 @@
@param qualifiers the array of Qualifiers for the scan.
Null or an array length of zero means there are no qualifiers.
@param tableName The full name of the table
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param indexName The name of the index, if one used to access table.
@param isConstraint If index, if used, is a backing index for a constraint.
@param forUpdate True means open for update
@@ -1011,6 +1018,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -1112,6 +1120,7 @@
@param optimizerEstimatedRowCount Estimated total # of rows by
optimizer
@param optimizerEstimatedCost Estimated total cost by optimizer
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param closeCleanup any cleanup the activation needs to do on close.
@return the nested loop join operation as a result set.
@exception StandardException thrown when unable to create the
@@ -1128,6 +1137,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException;
@@ -1155,6 +1165,7 @@
@param optimizerEstimatedRowCount Estimated total # of rows by
optimizer
@param optimizerEstimatedCost Estimated total cost by optimizer
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param closeCleanup any cleanup the activation needs to do on close.
@return the nested loop join operation as a result set.
@exception StandardException thrown when unable to create the
@@ -1171,6 +1182,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException;
@@ -1210,6 +1222,7 @@
optimizer
@param optimizerEstimatedCost Estimated total cost by optimizer
@param closeCleanup any cleanup the activation needs to do on close.
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@return the nested loop join operation as a result set.
@exception StandardException thrown when unable to create the
result set
@@ -1227,6 +1240,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException;
@@ -1257,6 +1271,7 @@
@param optimizerEstimatedRowCount Estimated total # of rows by
optimizer
@param optimizerEstimatedCost Estimated total cost by optimizer
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param closeCleanup any cleanup the activation needs to do on close.
@return the nested loop join operation as a result set.
@exception StandardException thrown when unable to create the
@@ -1275,6 +1290,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException;
@@ -1455,6 +1471,7 @@
* ExecRow rowAllocator() throws StandardException; </verbatim>
* @param conglomId the conglomerate of the table to be scanned.
* @param tableName The full name of the table
+ * @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
* @param indexName The name of the index, if one used to access table.
* @param colRefItem An saved item for a bitSet of columns that
* are referenced in the underlying table. -1 if
@@ -1481,6 +1498,7 @@
GeneratedMethod resultRowAllocator,
long conglomId,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
int colRefItem,
int lockMode,
@@ -1530,6 +1548,7 @@
@param qualifiers the array of Qualifiers for the scan.
Null or an array length of zero means there are no qualifiers.
@param tableName The full name of the table
+ @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
@param indexName The name of the index, if one used to access table.
@param isConstraint If index, if used, is a backing index for a constraint.
@param forUpdate True means open for update
@@ -1570,6 +1589,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseJoinStrategy.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseJoinStrategy.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseJoinStrategy.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/BaseJoinStrategy.java Mon Jan 16 17:10:52 2006
@@ -47,6 +47,8 @@
import org.apache.derby.iapi.services.sanity.SanityManager;
import org.apache.derby.iapi.reference.ClassName;
+import org.apache.derby.iapi.util.PropertyUtil;
+
abstract public class BaseJoinStrategy implements JoinStrategy {
public BaseJoinStrategy() {
}
@@ -112,6 +114,13 @@
throws StandardException
{
mb.push(innerTable.getBaseTableName());
+ //User may have supplied optimizer overrides in the sql
+ //Pass them onto execute phase so it can be shown in
+ //run time statistics.
+ if (innerTable.getProperties() != null)
+ mb.push(PropertyUtil.sortProperties(innerTable.getProperties()));
+ else
+ mb.pushNull("java.lang.String");
ConglomerateDescriptor cd =
innerTable.getTrulyTheBestAccessPath().getConglomerateDescriptor();
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java Mon Jan 16 17:10:52 2006
@@ -3131,6 +3131,13 @@
resultColumns.generateHolder(acb, mb, referencedCols, (FormatableBitSet) null);
mb.push(cd.getConglomerateNumber());
mb.push(tableDescriptor.getName());
+ //User may have supplied optimizer overrides in the sql
+ //Pass them onto execute phase so it can be shown in
+ //run time statistics.
+ if (tableProperties != null)
+ mb.push(org.apache.derby.iapi.util.PropertyUtil.sortProperties(tableProperties));
+ else
+ mb.pushNull("java.lang.String");
mb.push(cd.getConglomerateName());
mb.push(colRefItem);
mb.push(getTrulyTheBestAccessPath().getLockMode());
@@ -3141,7 +3148,7 @@
closeMethodArgument(acb, mb);
mb.callMethod(VMOpcode.INVOKEINTERFACE, (String) null, "getLastIndexKeyResultSet",
- ClassName.NoPutResultSet, 13);
+ ClassName.NoPutResultSet, 14);
}
@@ -3218,6 +3225,13 @@
mb.push(getResultSetNumber());
mb.push(hashKeyItem);
mb.push(tableDescriptor.getName());
+ //User may have supplied optimizer overrides in the sql
+ //Pass them onto execute phase so it can be shown in
+ //run time statistics.
+ if (tableProperties != null)
+ mb.push(org.apache.derby.iapi.util.PropertyUtil.sortProperties(tableProperties));
+ else
+ mb.pushNull("java.lang.String");
mb.push(cd.getConglomerateName());
mb.push(cd.isConstraint());
mb.push(colRefItem);
@@ -3230,7 +3244,7 @@
mb.callMethod(VMOpcode.INVOKEINTERFACE, (String) null, "getDistinctScanResultSet",
- ClassName.NoPutResultSet, 16);
+ ClassName.NoPutResultSet, 17);
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HalfOuterJoinNode.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HalfOuterJoinNode.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HalfOuterJoinNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HalfOuterJoinNode.java Mon Jan 16 17:10:52 2006
@@ -90,7 +90,8 @@
onClause,
usingClause,
null,
- tableProperties);
+ tableProperties,
+ null);
this.rightOuterJoin = ((Boolean) rightOuterJoin).booleanValue();
/* We can only flatten an outer join
@@ -628,6 +629,7 @@
joinClause,
null,
resultColumns,
+ null,
null,
getContextManager());
ij.setTableNumber(tableNumber);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashJoinStrategy.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/HashJoinStrategy.java?rev=369619&r1=369618&r2=369619&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 Mon Jan 16 17:10:52 2006
@@ -309,7 +309,7 @@
tableLocked,
isolationLevel);
- return 28;
+ return 29;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java Mon Jan 16 17:10:52 2006
@@ -58,6 +58,7 @@
import org.apache.derby.impl.sql.compile.ActivationClassBuilder;
import org.apache.derby.iapi.util.JBitSet;
+import org.apache.derby.iapi.util.PropertyUtil;
import org.apache.derby.iapi.services.classfile.VMOpcode;
import java.util.Properties;
@@ -96,6 +97,8 @@
boolean joinClauseNormalized;
PredicateList joinPredicates;
ResultColumnList usingClause;
+ //User provided optimizer overrides
+ Properties joinOrderStrategyProperties;
/**
@@ -107,6 +110,7 @@
* @param usingClause The USING clause
* @param selectList The result column list for the join
* @param tableProperties Properties list associated with the table
+ * @param joinOrderStrategyProperties User provided optimizer overrides
*
* @exception StandardException Thrown on error
*/
@@ -116,7 +120,8 @@
Object onClause,
Object usingClause,
Object selectList,
- Object tableProperties)
+ Object tableProperties,
+ Object joinOrderStrategyProperties)
throws StandardException
{
super.init(leftResult, rightResult, tableProperties);
@@ -124,6 +129,7 @@
joinClause = (ValueNode) onClause;
joinClauseNormalized = false;
this.usingClause = (ResultColumnList) usingClause;
+ this.joinOrderStrategyProperties = (Properties)joinOrderStrategyProperties;
/* JoinNodes can be generated in the parser or at the end of optimization.
* Those generated in the parser do not have resultColumns yet.
@@ -1645,6 +1651,14 @@
// estimated cost
mb.push(costEstimate.getEstimatedCost());
+ //User may have supplied optimizer overrides in the sql
+ //Pass them onto execute phase so it can be shown in
+ //run time statistics.
+ if (joinOrderStrategyProperties != null)
+ mb.push(PropertyUtil.sortProperties(joinOrderStrategyProperties));
+ else
+ mb.pushNull("java.lang.String");
+
closeMethodArgument(acb, mb);
return numArgs;
@@ -1665,7 +1679,7 @@
*/
protected int getNumJoinArguments()
{
- return 12;
+ return 13;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NestedLoopJoinStrategy.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NestedLoopJoinStrategy.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NestedLoopJoinStrategy.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NestedLoopJoinStrategy.java Mon Jan 16 17:10:52 2006
@@ -224,11 +224,11 @@
if (bulkFetch > 1)
{
- numArgs = 25;
+ numArgs = 26;
}
else
{
- numArgs = 24;
+ numArgs = 25;
}
fillInScanArgs1(tc, mb,
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java Mon Jan 16 17:10:52 2006
@@ -1660,6 +1660,8 @@
null,
leftRCList,
null,
+ //user supplied optimizer overrides
+ fromList.properties,
getContextManager()
),
0
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Mon Jan 16 17:10:52 2006
@@ -8563,6 +8563,7 @@
usingClause,
null,
null,
+ null,
getContextManager());
break;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BulkTableScanResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BulkTableScanResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BulkTableScanResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BulkTableScanResultSet.java Mon Jan 16 17:10:52 2006
@@ -92,6 +92,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -119,6 +120,7 @@
sameStartStopPosition,
qualifiers,
tableName,
+ userSuppliedOptimizerOverrides,
indexName,
isConstraint,
forUpdate,
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DependentResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DependentResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DependentResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DependentResultSet.java Mon Jan 16 17:10:52 2006
@@ -104,6 +104,7 @@
protected Qualifier[][] qualifiers;
protected GeneratedMethod closeCleanup;
public String tableName;
+ public String userSuppliedOptimizerOverrides;
public String indexName;
protected boolean runTimeStatisticsOn;
protected FormatableBitSet accessedCols;
@@ -139,6 +140,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -191,6 +193,7 @@
this.sameStartStopPosition = sameStartStopPosition;
this.qualifiers = qualifiers;
this.tableName = tableName;
+ this.userSuppliedOptimizerOverrides = userSuppliedOptimizerOverrides;
this.indexName = "On Foreign Key"; // RESOLVE , get actual indexName;
this.isConstraint = isConstraint;
this.forUpdate = forUpdate;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DistinctScanResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DistinctScanResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DistinctScanResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DistinctScanResultSet.java Mon Jan 16 17:10:52 2006
@@ -82,6 +82,7 @@
int resultSetNumber,
int hashKeyItem,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
int colRefItem,
@@ -102,7 +103,7 @@
(Qualifier[][]) null, // scanQualifiers
(Qualifier[][]) null, // nextQualifiers
DEFAULT_INITIAL_CAPACITY, DEFAULT_LOADFACTOR, DEFAULT_MAX_CAPACITY,
- hashKeyItem, tableName, indexName, isConstraint,
+ hashKeyItem, tableName, userSuppliedOptimizerOverrides, indexName, isConstraint,
false, // forUpdate
colRefItem, lockMode, tableLocked, isolationLevel,
false,
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericResultSetFactory.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericResultSetFactory.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericResultSetFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericResultSetFactory.java Mon Jan 16 17:10:52 2006
@@ -521,6 +521,7 @@
int maxCapacity,
int hashKeyColumn,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -555,6 +556,7 @@
maxCapacity,
hashKeyColumn,
tableName,
+ userSuppliedOptimizerOverrides,
indexName,
isConstraint,
forUpdate,
@@ -581,6 +583,7 @@
int resultSetNumber,
int hashKeyColumn,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
int colRefItem,
@@ -602,6 +605,7 @@
resultSetNumber,
hashKeyColumn,
tableName,
+ userSuppliedOptimizerOverrides,
indexName,
isConstraint,
colRefItem,
@@ -631,6 +635,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -660,6 +665,7 @@
sameStartStopPosition,
qualifiers,
tableName,
+ userSuppliedOptimizerOverrides,
indexName,
isConstraint,
forUpdate,
@@ -693,6 +699,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -730,6 +737,7 @@
sameStartStopPosition,
qualifiers,
tableName,
+ userSuppliedOptimizerOverrides,
indexName,
isConstraint,
forUpdate,
@@ -801,6 +809,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException
{
@@ -812,6 +821,7 @@
notExistsRightSide,
optimizerEstimatedRowCount,
optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides,
closeCleanup);
}
@@ -831,6 +841,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException
{
@@ -842,6 +853,7 @@
notExistsRightSide,
optimizerEstimatedRowCount,
optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides,
closeCleanup);
}
@@ -863,6 +875,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException
{
@@ -876,6 +889,7 @@
notExistsRightSide,
optimizerEstimatedRowCount,
optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides,
closeCleanup);
}
@@ -897,6 +911,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
throws StandardException
{
@@ -910,6 +925,7 @@
notExistsRightSide,
optimizerEstimatedRowCount,
optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides,
closeCleanup);
}
@@ -1086,6 +1102,7 @@
* ExecRow rowAllocator() throws StandardException; </verbatim>
* @param conglomId the conglomerate of the table to be scanned.
* @param tableName The full name of the table
+ * @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
* @param indexName The name of the index, if one used to access table.
* @param colRefItem An saved item for a bitSet of columns that
* are referenced in the underlying table. -1 if
@@ -1112,6 +1129,7 @@
GeneratedMethod resultRowAllocator,
long conglomId,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
int colRefItem,
int lockMode,
@@ -1128,6 +1146,7 @@
resultRowAllocator,
conglomId,
tableName,
+ userSuppliedOptimizerOverrides,
indexName,
colRefItem,
lockMode,
@@ -1158,6 +1177,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -1191,6 +1211,7 @@
sameStartStopPosition,
qualifiers,
tableName,
+ userSuppliedOptimizerOverrides,
indexName,
isConstraint,
forUpdate,
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashJoinResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashJoinResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashJoinResultSet.java Mon Jan 16 17:10:52 2006
@@ -56,11 +56,12 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
{
super(leftResultSet, leftNumCols, rightResultSet, rightNumCols,
activation, restriction, resultSetNumber,
oneRowRightSide, notExistsRightSide, optimizerEstimatedRowCount,
- optimizerEstimatedCost, closeCleanup);
+ optimizerEstimatedCost, userSuppliedOptimizerOverrides, closeCleanup);
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashLeftOuterJoinResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashLeftOuterJoinResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashLeftOuterJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashLeftOuterJoinResultSet.java Mon Jan 16 17:10:52 2006
@@ -59,6 +59,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
{
super(leftResultSet, leftNumCols, rightResultSet, rightNumCols,
@@ -66,6 +67,6 @@
emptyRowFun, wasRightOuterJoin,
oneRowRightSide, notExistsRightSide,
optimizerEstimatedRowCount, optimizerEstimatedCost,
- closeCleanup);
+ userSuppliedOptimizerOverrides, closeCleanup);
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashScanResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashScanResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashScanResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/HashScanResultSet.java Mon Jan 16 17:10:52 2006
@@ -110,6 +110,7 @@
private int maxCapacity;
private GeneratedMethod closeCleanup;
public String tableName;
+ public String userSuppliedOptimizerOverrides;
public String indexName;
public boolean forUpdate;
private boolean runTimeStatisticsOn;
@@ -152,6 +153,7 @@
int maxCapacity,
int hashKeyItem,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -195,6 +197,7 @@
this.loadFactor = loadFactor;
this.maxCapacity = maxCapacity;
this.tableName = tableName;
+ this.userSuppliedOptimizerOverrides = userSuppliedOptimizerOverrides;
this.indexName = indexName;
this.isConstraint = isConstraint;
this.forUpdate = forUpdate;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java Mon Jan 16 17:10:52 2006
@@ -2329,6 +2329,7 @@
false,
(Qualifier[][])null, // qualifiers
"tableName",
+ (String)null,
(String)null, // index name
false, // is constraint
false, // for update
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/JoinResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/JoinResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/JoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/JoinResultSet.java Mon Jan 16 17:10:52 2006
@@ -65,6 +65,8 @@
protected GeneratedMethod closeCleanup;
public boolean oneRowRightSide;
public boolean notExistsRightSide; //right side is NOT EXISTS
+
+ String userSuppliedOptimizerOverrides;
/*
* class interface
@@ -81,6 +83,7 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
{
super(activation, resultSetNumber, optimizerEstimatedRowCount,
@@ -94,6 +97,7 @@
this.notExistsRightSide = notExistsRightSide;
this.closeCleanup = closeCleanup;
constructorTime += getElapsedMillis(beginTime);
+ this.userSuppliedOptimizerOverrides = userSuppliedOptimizerOverrides;
}
//
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/LastIndexKeyResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/LastIndexKeyResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/LastIndexKeyResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/LastIndexKeyResultSet.java Mon Jan 16 17:10:52 2006
@@ -70,6 +70,7 @@
protected Qualifier[][] qualifiers;
protected GeneratedMethod closeCleanup;
public String tableName;
+ public String userSuppliedOptimizerOverrides;
public String indexName;
protected boolean runTimeStatisticsOn;
protected FormatableBitSet accessedCols;
@@ -95,6 +96,7 @@
* ExecRow rowAllocator() throws StandardException; </verbatim>
* @param conglomId the conglomerate of the table to be scanned.
* @param tableName The full name of the table
+ * @param userSuppliedOptimizerOverrides Overrides specified by the user on the sql
* @param indexName The name of the index, if one used to access table.
* @param colRefItem An saved item for a bitSet of columns that
* are referenced in the underlying table. -1 if
@@ -119,6 +121,7 @@
GeneratedMethod resultRowAllocator,
long conglomId,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
int colRefItem,
int lockMode,
@@ -144,6 +147,7 @@
this.resultRowAllocator = resultRowAllocator;
this.tableName = tableName;
+ this.userSuppliedOptimizerOverrides = userSuppliedOptimizerOverrides;
this.indexName = indexName;
this.lockMode = lockMode;
if (colRefItem != -1)
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java Mon Jan 16 17:10:52 2006
@@ -93,7 +93,7 @@
super(leftResultSet, leftNumCols, rightResultSet, rightNumCols,
activation, restriction, resultSetNumber,
oneRowRightSide, notExistsRightSide, optimizerEstimatedRowCount,
- optimizerEstimatedCost, closeCleanup);
+ optimizerEstimatedCost, null, closeCleanup);
this.leftGreaterThanRight = leftGreaterThanRight;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java Mon Jan 16 17:10:52 2006
@@ -287,12 +287,13 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
{
super(leftResultSet, leftNumCols, rightResultSet, rightNumCols,
activation, restriction, resultSetNumber,
oneRowRightSide, notExistsRightSide, optimizerEstimatedRowCount,
- optimizerEstimatedCost, closeCleanup);
+ optimizerEstimatedCost, userSuppliedOptimizerOverrides, closeCleanup);
if (notExistsRightSide)
rightTemplate = getExecutionFactory().getValueRow(rightNumCols);
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java Mon Jan 16 17:10:52 2006
@@ -283,13 +283,14 @@
boolean notExistsRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
GeneratedMethod closeCleanup)
{
super(leftResultSet, leftNumCols, rightResultSet, rightNumCols,
activation, restriction, resultSetNumber,
oneRowRightSide, notExistsRightSide,
optimizerEstimatedRowCount, optimizerEstimatedCost,
- closeCleanup);
+ userSuppliedOptimizerOverrides, closeCleanup);
this.emptyRowFun = emptyRowFun;
this.wasRightOuterJoin = wasRightOuterJoin;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RealResultSetStatisticsFactory.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RealResultSetStatisticsFactory.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RealResultSetStatisticsFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RealResultSetStatisticsFactory.java Mon Jan 16 17:10:52 2006
@@ -595,6 +595,7 @@
tsrs.closeTime,
tsrs.resultSetNumber,
tsrs.tableName,
+ tsrs.userSuppliedOptimizerOverrides,
tsrs.indexName,
tsrs.isConstraint,
tsrs.printQualifiers(tsrs.qualifiers),
@@ -688,6 +689,7 @@
hlojrs.restrictionTime,
hlojrs.optimizerEstimatedRowCount,
hlojrs.optimizerEstimatedCost,
+ hlojrs.userSuppliedOptimizerOverrides,
getResultSetStatistics(
hlojrs.leftResultSet),
getResultSetStatistics(
@@ -714,6 +716,7 @@
nllojrs.restrictionTime,
nllojrs.optimizerEstimatedRowCount,
nllojrs.optimizerEstimatedCost,
+ nllojrs.userSuppliedOptimizerOverrides,
getResultSetStatistics(
nllojrs.leftResultSet),
getResultSetStatistics(
@@ -740,6 +743,7 @@
hjrs.oneRowRightSide,
hjrs.optimizerEstimatedRowCount,
hjrs.optimizerEstimatedCost,
+ hjrs.userSuppliedOptimizerOverrides,
getResultSetStatistics(
hjrs.leftResultSet),
getResultSetStatistics(
@@ -766,6 +770,7 @@
nljrs.oneRowRightSide,
nljrs.optimizerEstimatedRowCount,
nljrs.optimizerEstimatedCost,
+ nljrs.userSuppliedOptimizerOverrides,
getResultSetStatistics(
nljrs.leftResultSet),
getResultSetStatistics(
@@ -1269,6 +1274,7 @@
dsrs.closeTime,
dsrs.resultSetNumber,
dsrs.tableName,
+ null,
dsrs.indexName,
dsrs.isConstraint,
dsrs.printQualifiers(),
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TableScanResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TableScanResultSet.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TableScanResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TableScanResultSet.java Mon Jan 16 17:10:52 2006
@@ -95,6 +95,7 @@
public Qualifier[][] qualifiers;
protected GeneratedMethod closeCleanup;
public String tableName;
+ public String userSuppliedOptimizerOverrides;
public String indexName;
protected boolean runTimeStatisticsOn;
protected FormatableBitSet accessedCols;
@@ -150,6 +151,7 @@
boolean sameStartStopPosition,
Qualifier[][] qualifiers,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
boolean forUpdate,
@@ -198,6 +200,7 @@
this.sameStartStopPosition = sameStartStopPosition;
this.qualifiers = qualifiers;
this.tableName = tableName;
+ this.userSuppliedOptimizerOverrides = userSuppliedOptimizerOverrides;
this.indexName = indexName;
this.isConstraint = isConstraint;
this.forUpdate = forUpdate;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashJoinStatistics.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashJoinStatistics.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashJoinStatistics.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashJoinStatistics.java Mon Jan 16 17:10:52 2006
@@ -55,6 +55,7 @@
boolean oneRowRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
ResultSetStatistics leftResultSetStatistics,
ResultSetStatistics rightResultSetStatistics
)
@@ -75,6 +76,7 @@
oneRowRightSide,
optimizerEstimatedRowCount,
optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides,
leftResultSetStatistics,
rightResultSetStatistics
);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashLeftOuterJoinStatistics.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashLeftOuterJoinStatistics.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashLeftOuterJoinStatistics.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashLeftOuterJoinStatistics.java Mon Jan 16 17:10:52 2006
@@ -56,6 +56,7 @@
long restrictionTime,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
ResultSetStatistics leftResultSetStatistics,
ResultSetStatistics rightResultSetStatistics,
int emptyRightRowsReturned
@@ -76,6 +77,7 @@
restrictionTime,
optimizerEstimatedRowCount,
optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides,
leftResultSetStatistics,
rightResultSetStatistics,
emptyRightRowsReturned
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealJoinResultSetStatistics.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealJoinResultSetStatistics.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealJoinResultSetStatistics.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealJoinResultSetStatistics.java Mon Jan 16 17:10:52 2006
@@ -46,6 +46,7 @@
public int rowsSeenRight;
public int rowsReturned;
public long restrictionTime;
+ public String userSuppliedOptimizerOverrides;
// CONSTRUCTORS
@@ -68,7 +69,8 @@
int rowsReturned,
long restrictionTime,
double optimizerEstimatedRowCount,
- double optimizerEstimatedCost
+ double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides
)
{
super(
@@ -87,6 +89,7 @@
this.rowsSeenRight = rowsSeenRight;
this.rowsReturned = rowsReturned;
this.restrictionTime = restrictionTime;
+ this.userSuppliedOptimizerOverrides = userSuppliedOptimizerOverrides;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopJoinStatistics.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopJoinStatistics.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopJoinStatistics.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopJoinStatistics.java Mon Jan 16 17:10:52 2006
@@ -74,6 +74,7 @@
boolean oneRowRightSide,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
ResultSetStatistics leftResultSetStatistics,
ResultSetStatistics rightResultSetStatistics
)
@@ -92,7 +93,8 @@
rowsReturned,
restrictionTime,
optimizerEstimatedRowCount,
- optimizerEstimatedCost
+ optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides
);
this.oneRowRightSide = oneRowRightSide;
this.leftResultSetStatistics = leftResultSetStatistics;
@@ -114,7 +116,17 @@
{
initFormatInfo(depth);
+ String header = "";
+ if (userSuppliedOptimizerOverrides != null)
+ {
+ header =
+ indent + MessageService.getTextMessage(SQLState.RTS_USER_SUPPLIED_OPTIMIZER_OVERRIDES_FOR_JOIN,
+ userSuppliedOptimizerOverrides);
+ header = header + "\n";
+ }
+
return
+ header +
indent + resultSetName + ":\n" +
indent + MessageService.getTextMessage(SQLState.RTS_NUM_OPENS) +
" = " + numOpens + "\n" +
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopLeftOuterJoinStatistics.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopLeftOuterJoinStatistics.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopLeftOuterJoinStatistics.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopLeftOuterJoinStatistics.java Mon Jan 16 17:10:52 2006
@@ -65,6 +65,7 @@
long restrictionTime,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
+ String userSuppliedOptimizerOverrides,
ResultSetStatistics leftResultSetStatistics,
ResultSetStatistics rightResultSetStatistics,
int emptyRightRowsReturned
@@ -86,6 +87,7 @@
false, // We never do an EXISTS join for an outer join
optimizerEstimatedRowCount,
optimizerEstimatedCost,
+ userSuppliedOptimizerOverrides,
leftResultSetStatistics,
rightResultSetStatistics
);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealTableScanStatistics.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealTableScanStatistics.java?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealTableScanStatistics.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealTableScanStatistics.java Mon Jan 16 17:10:52 2006
@@ -53,6 +53,7 @@
public int fetchSize;
public String isolationLevel;
public String tableName;
+ public String userSuppliedOptimizerOverrides;
public String indexName;
public String lockString;
public String qualifiers;
@@ -75,6 +76,7 @@
long closeTime,
int resultSetNumber,
String tableName,
+ String userSuppliedOptimizerOverrides,
String indexName,
boolean isConstraint,
String qualifiers,
@@ -102,6 +104,7 @@
optimizerEstimatedCost
);
this.tableName = tableName;
+ this.userSuppliedOptimizerOverrides = userSuppliedOptimizerOverrides;
this.indexName = indexName;
this.isConstraint = isConstraint;
this.qualifiers = qualifiers;
@@ -130,14 +133,21 @@
*/
public String getStatementExecutionPlanText(int depth)
{
- String header;
+ String header = "";
String isolationString = null;
initFormatInfo(depth);
+ if (userSuppliedOptimizerOverrides != null)
+ {
+ header =
+ indent + MessageService.getTextMessage(SQLState.RTS_USER_SUPPLIED_OPTIMIZER_OVERRIDES_FOR_TABLE,
+ tableName, userSuppliedOptimizerOverrides);
+ header = header + "\n";
+ }
if (indexName != null)
{
- header =
+ header = header +
indent + MessageService.getTextMessage(
SQLState.RTS_IS_RS_USING,
tableName,
@@ -150,7 +160,7 @@
}
else
{
- header =
+ header = header +
indent + MessageService.getTextMessage(
SQLState.RTS_TS_RS_FOR,
tableName);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties?rev=369619&r1=369618&r2=369619&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties Mon Jan 16 17:10:52 2006
@@ -906,6 +906,8 @@
43Y53.U=Referential Actions On Dependent Tables
43Y54.U=Begin Referential Action On Dependent Table Number
43Y55.U=End Referential Action On Dependent Table Number
+43Y56.U=User supplied optimizer overrides on {0} are {1}
+43Y57.U=User supplied optimizer overrides for join are {0}
54004=SELECT statement has too many items in GROUP BY, ORDER BY or select list.
54008=The CREATE INDEX statement specifies too many columns (16 is the maximum).