[teiid-commits] teiid SVN: r3333 - in branches/7.4.x/engine/src: test/java/org/teiid/query/processor and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Jul 25 13:39:32 EDT 2011


Author: shawkins
Date: 2011-07-25 13:39:32 -0400 (Mon, 25 Jul 2011)
New Revision: 3333

Modified:
   branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java
   branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
Log:
TEIID-1681 fix for pushing limits too far with procedure executions

Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java	2011-07-25 15:46:41 UTC (rev 3332)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushLimit.java	2011-07-25 17:39:32 UTC (rev 3333)
@@ -51,6 +51,7 @@
 import org.teiid.query.sql.symbol.Constant;
 import org.teiid.query.sql.symbol.Expression;
 import org.teiid.query.sql.symbol.Function;
+import org.teiid.query.sql.symbol.GroupSymbol;
 import org.teiid.query.sql.symbol.SearchedCaseExpression;
 import org.teiid.query.sql.visitor.EvaluatableVisitor;
 import org.teiid.query.util.CommandContext;
@@ -168,6 +169,13 @@
             }
             case NodeConstants.Types.SOURCE:
             {
+                GroupSymbol virtualGroup = child.getGroups().iterator().next();
+                if (virtualGroup.isProcedure()) {
+                	return false;
+                }
+                if (FrameUtil.isProcedure(child.getFirstChild())) {
+                    return false;
+                }
                 return true;
             }
             default:

Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestProcessor.java	2011-07-25 15:46:41 UTC (rev 3332)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestProcessor.java	2011-07-25 17:39:32 UTC (rev 3333)
@@ -7549,5 +7549,15 @@
         helpProcess(plan, dataManager, new List[] {Arrays.asList(1, 1)});
     }
     
+    @Test public void testUnorderedLimitWithProc() throws Exception {
+    	String sql = "select e1 from (exec pm1.sq1()) x limit 1";
+        
+        FakeDataManager dataManager = new FakeDataManager();
+        sampleData1(dataManager);
+        ProcessorPlan plan = helpGetPlan(sql, RealMetadataFactory.example1Cached(), TestOptimizer.getGenericFinder());
+        
+        helpProcess(plan, dataManager, new List[] {Arrays.asList("a")});
+    }
+    
     private static final boolean DEBUG = false;
 }



More information about the teiid-commits mailing list