[teiid-commits] teiid SVN: r3974 - branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Thu Apr 5 10:47:26 EDT 2012
Author: shawkins
Date: 2012-04-05 10:47:26 -0400 (Thu, 05 Apr 2012)
New Revision: 3974
Modified:
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanSorts.java
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java
Log:
TEIID-1990 ensuring greater detail for planning decisions
Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java 2012-04-04 19:54:58 UTC (rev 3973)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CriteriaCapabilityValidatorVisitor.java 2012-04-05 14:47:26 UTC (rev 3974)
@@ -632,7 +632,11 @@
this.valid = false;
setAbort(true);
if (analysisRecord != null && analysisRecord.recordDebug()) {
- analysisRecord.println(reason + " " + object); //$NON-NLS-1$
+ try {
+ analysisRecord.println(reason + " " + this.metadata.getName(this.modelID) + ": " + object); //$NON-NLS-1$ //$NON-NLS-2$
+ } catch (QueryMetadataException e) {
+ } catch (TeiidComponentException e) {
+ }
}
}
@@ -658,6 +662,7 @@
}
CriteriaCapabilityValidatorVisitor visitor = new CriteriaCapabilityValidatorVisitor(modelID, metadata, capFinder, caps);
+ visitor.analysisRecord = analysisRecord;
PostOrderNavigator.doVisit(obj, visitor);
if(visitor.getException() != null) {
Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanSorts.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanSorts.java 2012-04-04 19:54:58 UTC (rev 3973)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanSorts.java 2012-04-05 14:47:26 UTC (rev 3974)
@@ -292,7 +292,7 @@
if (newRoot != null) {
root = newRoot;
if (accessNode.getParent().getType() == NodeConstants.Types.TUPLE_LIMIT) {
- newRoot = RulePushLimit.raiseAccessOverLimit(root, accessNode, metadata, capFinder, accessNode.getParent());
+ newRoot = RulePushLimit.raiseAccessOverLimit(root, accessNode, metadata, capFinder, accessNode.getParent(), record);
}
if (newRoot != null) {
root = newRoot;
Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java 2012-04-04 19:54:58 UTC (rev 3973)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java 2012-04-05 14:47:26 UTC (rev 3974)
@@ -105,7 +105,7 @@
continue;
}
- while (canPushLimit(plan, limitNode, limitNodes, metadata, capabilitiesFinder)) {
+ while (canPushLimit(plan, limitNode, limitNodes, metadata, capabilitiesFinder, analysisRecord)) {
plan = RuleRaiseAccess.performRaise(plan, limitNode.getFirstChild(), limitNode);
}
@@ -119,7 +119,7 @@
return plan;
}
- boolean canPushLimit(PlanNode rootNode, PlanNode limitNode, List<PlanNode> limitNodes, QueryMetadataInterface metadata, CapabilitiesFinder capFinder) throws QueryMetadataException, TeiidComponentException {
+ boolean canPushLimit(PlanNode rootNode, PlanNode limitNode, List<PlanNode> limitNodes, QueryMetadataInterface metadata, CapabilitiesFinder capFinder, AnalysisRecord record) throws QueryMetadataException, TeiidComponentException {
PlanNode child = limitNode.getFirstChild();
if (child == null || child.getChildCount() == 0) {
return false;
@@ -142,7 +142,7 @@
NodeEditor.removeChildNode(limitNode, child);
limitNodes.remove(child);
- return canPushLimit(rootNode, limitNode, limitNodes, metadata, capFinder);
+ return canPushLimit(rootNode, limitNode, limitNodes, metadata, capFinder, record);
}
case NodeConstants.Types.SET_OP:
{
@@ -165,7 +165,7 @@
}
case NodeConstants.Types.ACCESS:
{
- raiseAccessOverLimit(rootNode, child, metadata, capFinder, limitNode);
+ raiseAccessOverLimit(rootNode, child, metadata, capFinder, limitNode, record);
return false;
}
case NodeConstants.Types.PROJECT:
@@ -219,7 +219,7 @@
PlanNode accessNode,
QueryMetadataInterface metadata,
CapabilitiesFinder capFinder,
- PlanNode parentNode) throws QueryMetadataException,
+ PlanNode parentNode, AnalysisRecord analysisRecord) throws QueryMetadataException,
TeiidComponentException {
Object modelID = RuleRaiseAccess.getModelIDFromAccess(accessNode, metadata);
if (modelID == null) {
@@ -229,6 +229,9 @@
Expression limit = (Expression)parentNode.getProperty(NodeConstants.Info.MAX_TUPLE_LIMIT);
if (limit != null && !CapabilitiesUtil.supportsRowLimit(modelID, metadata, capFinder)) {
+ if (analysisRecord != null && analysisRecord.recordDebug()) {
+ analysisRecord.println("limit not supported by source " + metadata.getName(modelID)); //$NON-NLS-1$
+ }
return null;
}
Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java 2012-04-04 19:54:58 UTC (rev 3973)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java 2012-04-05 14:47:26 UTC (rev 3974)
@@ -290,7 +290,7 @@
}
case NodeConstants.Types.TUPLE_LIMIT:
{
- return RulePushLimit.raiseAccessOverLimit(rootNode, accessNode, metadata, capFinder, parentNode);
+ return RulePushLimit.raiseAccessOverLimit(rootNode, accessNode, metadata, capFinder, parentNode, record);
}
default:
{
More information about the teiid-commits
mailing list