Author: shawkins
Date: 2011-08-31 14:28:44 -0400 (Wed, 31 Aug 2011)
New Revision: 3439
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java
branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestWithClauseProcessing.java
Log:
TEIID-1737 fix for temptabledatamanager inappropriately handling queries with a with
clause
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java
===================================================================
---
branches/7.4.x/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java 2011-08-31
15:51:27 UTC (rev 3438)
+++
branches/7.4.x/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java 2011-08-31
18:28:44 UTC (rev 3439)
@@ -64,6 +64,7 @@
import org.teiid.query.eval.Evaluator;
import org.teiid.query.mapping.relational.QueryNode;
import org.teiid.query.metadata.QueryMetadataInterface;
+import org.teiid.query.metadata.TempMetadataAdapter;
import org.teiid.query.metadata.TempMetadataID;
import org.teiid.query.optimizer.relational.RelationalPlanner;
import org.teiid.query.parser.ParseInfo;
@@ -185,6 +186,9 @@
TempTableStore contextStore = context.getTempTableStore();
if (command instanceof Query) {
Query query = (Query)command;
+ if (modelName != null &&
!modelName.equals(TempMetadataAdapter.TEMP_MODEL.getID())) {
+ return null;
+ }
return registerQuery(context, contextStore, query);
}
if (command instanceof ProcedureContainer) {
Modified:
branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestWithClauseProcessing.java
===================================================================
---
branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestWithClauseProcessing.java 2011-08-31
15:51:27 UTC (rev 3438)
+++
branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestWithClauseProcessing.java 2011-08-31
18:28:44 UTC (rev 3439)
@@ -64,10 +64,16 @@
String sql = "with a (x, y, z) as (select e1, e2, e3 from pm1.g1) SELECT a.x
from a, a z"; //$NON-NLS-1$
- FakeDataManager dataManager = new FakeDataManager();
- sampleData1(dataManager);
+ HardcodedDataManager dataManager = new HardcodedDataManager();
+ List[] expected = new List[] {
+ Arrays.asList("a", 1, Boolean.FALSE),
+ };
+
+ dataManager.addData("WITH a (x, y, z) AS (SELECT g_0.e1, g_0.e2, g_0.e3 FROM
pm1.g1 AS g_0) SELECT g_0.x FROM a AS g_0, a AS g_1", expected);
- TestOptimizer.helpPlan(sql, RealMetadataFactory.example1Cached(), null, capFinder,
new String[] {"WITH a (x, y, z) AS (SELECT g_0.e1, g_0.e2, g_0.e3 FROM pm1.g1 AS g_0)
SELECT g_0.x FROM a AS g_0, a AS g_1"}, ComparisonMode.EXACT_COMMAND_STRING);
+ ProcessorPlan plan = TestOptimizer.helpPlan(sql,
RealMetadataFactory.example1Cached(), null, capFinder, new String[] {"WITH a (x, y,
z) AS (SELECT g_0.e1, g_0.e2, g_0.e3 FROM pm1.g1 AS g_0) SELECT g_0.x FROM a AS g_0, a AS
g_1"}, ComparisonMode.EXACT_COMMAND_STRING);
+
+ helpProcess(plan, dataManager, expected);
}
@Test public void testWithPushdownWithConstants() throws TeiidException {