[teiid-commits] teiid SVN: r4116 - in branches/7.7.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
Wed May 16 17:19:02 EDT 2012
Author: shawkins
Date: 2012-05-16 17:19:02 -0400 (Wed, 16 May 2012)
New Revision: 4116
Modified:
branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushSelectCriteria.java
branches/7.7.x/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
Log:
TEIID-2048 fix for proc relational dep out parameter
Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushSelectCriteria.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushSelectCriteria.java 2012-05-16 21:16:25 UTC (rev 4115)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushSelectCriteria.java 2012-05-16 21:19:02 UTC (rev 4116)
@@ -615,6 +615,15 @@
}
FrameUtil.convertNode(copyNode, sourceGroup, null, symbolMap.asMap(), metadata, true);
+
+ //any proc relational criteria that is not input criteria should stay above the source
+ if (sourceGroup.isProcedure() && !copyNode.getGroups().isEmpty()) {
+ if (this.createdNodes != null) {
+ this.createdNodes.remove(this.createdNodes.size() - 1);
+ }
+ return false;
+ }
+
PlanNode intermediateParent = NodeEditor.findParent(projectNode, NodeConstants.Types.ACCESS, NodeConstants.Types.SOURCE | NodeConstants.Types.SET_OP);
if (intermediateParent != null) {
intermediateParent.addAsParent(copyNode);
Modified: branches/7.7.x/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
===================================================================
--- branches/7.7.x/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java 2012-05-16 21:16:25 UTC (rev 4115)
+++ branches/7.7.x/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java 2012-05-16 21:19:02 UTC (rev 4116)
@@ -236,6 +236,28 @@
TestProcessor.helpProcess(plan, dataManager, expected);
}
+ @Test public void testProcAsTableInJoinWithOutJoinPredicate(){
+ String sql = "select param1, param2, pm1.vsp26.e2, pm1.g1.e2 from pm1.vsp26, pm1.g1 where pm1.vsp26.e2 = pm1.g1.e2 and param1 = pm1.g1.e2 and param2 = pm1.g1.e1 order by param1, param2, pm1.vsp26.e2"; //$NON-NLS-1$
+
+ // Create expected results
+ List<?>[] expected = new List[] {
+ Arrays.asList(new Object[] { new Integer(0), "a", new Integer(0), 0}), //$NON-NLS-1$
+ Arrays.asList(new Object[] { new Integer(0), "a", new Integer(0), 0}), //$NON-NLS-1$
+ Arrays.asList(new Object[] { new Integer(0), "a", new Integer(0), 0}), //$NON-NLS-1$
+ Arrays.asList(new Object[] { new Integer(0), "a", new Integer(0), 0}), //$NON-NLS-1$
+ Arrays.asList(new Object[] { new Integer(1), "c", new Integer(1), 1}), //$NON-NLS-1$
+ Arrays.asList(new Object[] { new Integer(2), "b", new Integer(2), 2}), //$NON-NLS-1$
+ Arrays.asList(new Object[] { new Integer(3), "a", new Integer(3), 3}), //$NON-NLS-1$
+ };
+ // Construct data manager with data
+ FakeDataManager dataManager = new FakeDataManager();
+ TestProcessor.sampleData1(dataManager);
+ // Plan query
+ ProcessorPlan plan = TestProcessor.helpGetPlan(sql, RealMetadataFactory.example1Cached());
+ // Run query
+ TestProcessor.helpProcess(plan, dataManager, expected);
+ }
+
@Test public void testProcAsTableInSubquery(){
String sql = "select param1, param2, pm1.vsp26.e2, (select count(e1) from pm1.vsp26 where param1 = 1 and param2 = 'a') x from pm1.vsp26, pm1.g1 where param1 = pm1.g1.e2 and param2 = pm1.g1.e1 order by param1, param2, e2"; //$NON-NLS-1$
More information about the teiid-commits
mailing list