[teiid-commits] teiid SVN: r2727 - in trunk: engine/src/main/java/org/teiid/query/optimizer/relational and 2 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Nov 17 10:53:07 EST 2010


Author: shawkins
Date: 2010-11-17 10:53:07 -0500 (Wed, 17 Nov 2010)
New Revision: 2727

Modified:
   trunk/build/kits/jboss-container/teiid-releasenotes.html
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
   trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
   trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
Log:
TEIID-211 TEIID-1360 updating release notes and adding checks for the with clause.

Modified: trunk/build/kits/jboss-container/teiid-releasenotes.html
===================================================================
--- trunk/build/kits/jboss-container/teiid-releasenotes.html	2010-11-16 23:45:44 UTC (rev 2726)
+++ trunk/build/kits/jboss-container/teiid-releasenotes.html	2010-11-17 15:53:07 UTC (rev 2727)
@@ -26,7 +26,7 @@
 </UL>
 <H2><A NAME="Highlights"></A>Highlights</H2>
 <UL>
-	
+	<LI><B>Subquery Optimization</B> - added rewrite to INNER JOIN for applicable WHERE clause subqueries. Also added cost based SEMI and ANTI-SEMI join handling for applicable non-pushed WHERE and HAVING subqueries.
 </UL>
 
 <h2><a name="Compatibility">Compatibility Issues</a></h2>

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java	2010-11-16 23:45:44 UTC (rev 2726)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java	2010-11-17 15:53:07 UTC (rev 2727)
@@ -838,6 +838,10 @@
         	if (queryCommand.getLimit() == null) {
         		queryCommand.setOrderBy(null);
         	}
+        	if (merge && queryCommand.getWith() != null && !queryCommand.getWith().isEmpty()) {
+        		//TODO: should recontext with and merge
+        		merge = false;
+        	}
         }
 		node.setProperty(NodeConstants.Info.NESTED_COMMAND, nestedCommand);
 
@@ -856,7 +860,7 @@
 			if (actualMetadata instanceof TempMetadataAdapter) {
 				actualMetadata = ((TempMetadataAdapter)metadata).getMetadata();
 			}
-			ProcessorPlan plan = QueryOptimizer.optimizePlan(toPlan, actualMetadata, null, capFinder, analysisRecord, context);
+			ProcessorPlan plan = QueryOptimizer.optimizePlan(toPlan, actualMetadata, idGenerator, capFinder, analysisRecord, context);
 		    node.setProperty(NodeConstants.Info.PROCESSOR_PLAN, plan);
 		}
 	}

Modified: trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java	2010-11-16 23:45:44 UTC (rev 2726)
+++ trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java	2010-11-17 15:53:07 UTC (rev 2727)
@@ -660,7 +660,8 @@
 		}
 		for (Iterator<Criteria> crits = current.iterator(); crits.hasNext();) {
 			PlannedResult plannedResult = rmc.findSubquery(crits.next());
-			if (plannedResult.not || plannedResult.query == null || plannedResult.query.getProcessorPlan() != null) {
+			if (plannedResult.not || plannedResult.query == null || plannedResult.query.getProcessorPlan() != null 
+					|| (plannedResult.query.getWith() != null && !plannedResult.query.getWith().isEmpty())) {
 				continue;
 			}
 			if (plannedResult.query.getCorrelatedReferences() == null) {

Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java	2010-11-16 23:45:44 UTC (rev 2726)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestProcessor.java	2010-11-17 15:53:07 UTC (rev 2727)
@@ -7581,5 +7581,20 @@
         helpProcess(plan, dataManager, expected);
     }
     
+    @Test public void testInlineViewWith() {
+    	String sql = "select * from (with x as (select e1 from pm1.g1) select x.e1 from x order by e1 nulls last limit 1) y"; //$NON-NLS-1$
+    	
+        List[] expected = new List[] {
+        		Arrays.asList("a"),
+        };    
+    
+        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