[teiid-commits] teiid SVN: r4090 - in branches/7.7.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 May 10 08:31:48 EDT 2012


Author: shawkins
Date: 2012-05-10 08:31:45 -0400 (Thu, 10 May 2012)
New Revision: 4090

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

Modified: branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java	2012-05-10 12:31:04 UTC (rev 4089)
+++ branches/7.7.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourcePlanToProcessConverter.java	2012-05-10 12:31:45 UTC (rev 4090)
@@ -126,6 +126,9 @@
         String modelName = accessNode.getModelName();
 
 		if(!this.multiSourceModels.contains(modelName)) {
+			if (!accessNode.isShouldEvaluate()) {
+				accessNode.minimizeProject(accessNode.getCommand());
+			}
             return accessNode;
         }
         
@@ -283,5 +286,11 @@
 		
 		return command;
 	}
+	
+	@Override
+	protected boolean minimizeProject() {
+		//running minimize twice is not allowed as the original command is modified
+		return false;
+	}
 
 }

Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java	2012-05-10 12:31:04 UTC (rev 4089)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java	2012-05-10 12:31:45 UTC (rev 4090)
@@ -328,7 +328,7 @@
 	                    }
                     }
                     aNode.setCommand(command);
-                    if (!aNode.isShouldEvaluate()) {
+                    if (minimizeProject() && !aNode.isShouldEvaluate()) {
                     	aNode.minimizeProject(command);
                     }
                     setRoutingName(aNode, node);
@@ -578,5 +578,9 @@
             throw new QueryPlannerException(e, QueryPlugin.Util.getString("ERR.015.004.0009")); //$NON-NLS-1$
 		}
 	}
+	
+	protected boolean minimizeProject() {
+		return true;
+	}
 
 }

Modified: branches/7.7.x/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java
===================================================================
--- branches/7.7.x/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java	2012-05-10 12:31:04 UTC (rev 4089)
+++ branches/7.7.x/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourcePlanToProcessConverter.java	2012-05-10 12:31:45 UTC (rev 4090)
@@ -234,6 +234,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