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;
}
Show replies by date