[teiid-commits] teiid SVN: r1817 - in trunk/engine/src: test/java/com/metamatrix/query/processor and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Feb 10 15:37:16 EST 2010


Author: shawkins
Date: 2010-02-10 15:37:15 -0500 (Wed, 10 Feb 2010)
New Revision: 1817

Modified:
   trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java
   trunk/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java
Log:
TEIID-949 adding a fix for pushing criteria past implicit groupings

Modified: trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java	2010-02-10 20:15:55 UTC (rev 1816)
+++ trunk/engine/src/main/java/com/metamatrix/query/optimizer/relational/rules/RulePushSelectCriteria.java	2010-02-10 20:37:15 UTC (rev 1817)
@@ -140,6 +140,12 @@
 			CapabilitiesFinder capFinder, PlanNode critNode)
 			throws MetaMatrixComponentException, QueryMetadataException {
 		if (critNode.getGroups().isEmpty()) {
+	        //check to see if pushing may impact cardinality
+	        PlanNode groupNode = NodeEditor.findNodePreOrder(critNode, NodeConstants.Types.GROUP, NodeConstants.Types.SOURCE);
+	        if (groupNode != null && !groupNode.hasCollectionProperty(NodeConstants.Info.GROUP_COLS)) {
+	        	return groupNode;
+	        }
+
 			Object modelId = getSubqueryModelId(metadata, capFinder, critNode);
 			if (modelId != null) {
 				for (PlanNode node : NodeEditor.findAllNodes(critNode, NodeConstants.Types.SOURCE)) {

Modified: trunk/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java	2010-02-10 20:15:55 UTC (rev 1816)
+++ trunk/engine/src/test/java/com/metamatrix/query/processor/TestProcessor.java	2010-02-10 20:37:15 UTC (rev 1817)
@@ -7558,6 +7558,20 @@
         
         helpProcess(plan, dataManager, expected);
     }
+    
+    @Test public void testImplicitAggregateWithInlineView() {
+        String sql = "SELECT * FROM (SELECT b.count, enterprise_id FROM (SELECT COUNT(*), 2 AS enterprise_id FROM (SELECT 'A Name' AS Name, 1 AS enterprise_id) c ) b ) a WHERE enterprise_id = 1"; //$NON-NLS-1$
+        
+        List[] expected = new List[] {};    
+    
+        FakeDataManager dataManager = new FakeDataManager();
+        sampleData1(dataManager);
+        
+        ProcessorPlan plan = helpGetPlan(helpParse(sql), FakeMetadataFactory.example1Cached());
+        
+        helpProcess(plan, dataManager, expected);
+    }
+    
 
     private static final boolean DEBUG = false;
 }



More information about the teiid-commits mailing list