[teiid-commits] teiid SVN: r4039 - in branches/8.0.x/engine/src: main/java/org/teiid/query/optimizer/relational and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Apr 26 21:59:33 EDT 2012


Author: shawkins
Date: 2012-04-26 21:59:29 -0400 (Thu, 26 Apr 2012)
New Revision: 4039

Modified:
   branches/8.0.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java
   branches/8.0.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java
   branches/8.0.x/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java
Log:
TEIID-1960 fix for incorrect projection in multi-source

Modified: branches/8.0.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java
===================================================================
--- branches/8.0.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java	2012-04-26 19:58:31 UTC (rev 4038)
+++ branches/8.0.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java	2012-04-27 01:59:29 UTC (rev 4039)
@@ -281,5 +281,11 @@
 		
 		return command;
 	}
+	
+	@Override
+	protected boolean minimizeProject() {
+		//running minimize twice is not allowed as the original command is modified
+		return false;
+	}
 
 }

Modified: branches/8.0.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java
===================================================================
--- branches/8.0.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java	2012-04-26 19:58:31 UTC (rev 4038)
+++ branches/8.0.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java	2012-04-27 01:59:29 UTC (rev 4039)
@@ -326,7 +326,7 @@
 	                    }
                     }
                     aNode.setCommand(command);
-                    if (!aNode.isShouldEvaluate()) {
+                    if (minimizeProject() && !aNode.isShouldEvaluate()) {
                     	aNode.minimizeProject(command);
                     }
                     setRoutingName(aNode, node);
@@ -576,5 +576,9 @@
              throw new QueryPlannerException(QueryPlugin.Event.TEIID30251, e, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30251));
 		}
 	}
+	
+	protected boolean minimizeProject() {
+		return true;
+	}
 
 }

Modified: branches/8.0.x/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java
===================================================================
--- branches/8.0.x/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java	2012-04-26 19:58:31 UTC (rev 4038)
+++ branches/8.0.x/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java	2012-04-27 01:59:29 UTC (rev 4039)
@@ -232,6 +232,23 @@
         helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB());
     }
     
+    @Test public void testMultiReplacementWithProjectConstantLimit() throws Exception {
+        final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding();
+        final String userSql = "SELECT a, b, source_name || a, '1' FROM MultiModel.Phys"; //$NON-NLS-1$
+        final String multiModel = "MultiModel"; //$NON-NLS-1$
+        final int sources = 2;
+        final List<?>[] expected = new List<?>[] {
+            Arrays.asList("x", "z", "ax", "1"),
+        };
+        final HardcodedDataManager dataMgr = new HardcodedDataManager();
+        dataMgr.addData("SELECT g_0.a, g_0.b, concat('a', g_0.a) FROM MultiModel.Phys AS g_0", //$NON-NLS-1$
+                new List<?>[] {
+                    Arrays.asList("x", "z", "ax")}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        dataMgr.addData("SELECT g_0.a, g_0.b, concat('b', g_0.a) FROM MultiModel.Phys AS g_0", //$NON-NLS-1$
+                new List<?>[] {});
+        helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB());
+    }
+    
     @Test public void testMultiDependentJoin() throws Exception {
         QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding();
         



More information about the teiid-commits mailing list