[teiid-commits] teiid SVN: r4325 - in branches/7.4.x/engine/src: test/java/org/teiid/query/processor and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Aug 15 10:51:07 EDT 2012


Author: jolee
Date: 2012-08-15 10:51:07 -0400 (Wed, 15 Aug 2012)
New Revision: 4325

Modified:
   branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java
   branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/SortUtility.java
   branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java
   branches/7.4.x/engine/src/test/java/org/teiid/query/processor/relational/TestSortNode.java
Log:
TEIID-2146 Dependent join independent dup removal issue

Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java	2012-08-14 18:27:24 UTC (rev 4324)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java	2012-08-15 14:51:07 UTC (rev 4325)
@@ -116,10 +116,10 @@
                     if (setState.maxNdv <= 0 || setState.maxNdv >= distinctCount) {
                     	continue;
                     }
-                    if (dvs.getTupleBuffer().getSchema().size() > 1) {
+                    if (dvs.getTupleBuffer().getSchema().size() > 1 && dependentSetStates.size() > 1) {
 	                    distinctCount = 0;
 	                	ValueIterator vi = dvs.getValueIterator(setState.valueExpression);
-                    	if (dvs.getTupleBuffer().getSchema().indexOf(setState.valueExpression) == 0) {
+                    	if (setState.valueExpression.equals(dependentSetStates.get(0).valueExpression)) {
         	            	Object last = null;
 	                    	while (vi.hasNext()) {
     	                		Object next = vi.next();

Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/SortUtility.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/SortUtility.java	2012-08-14 18:27:24 UTC (rev 4324)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/SortUtility.java	2012-08-15 14:51:07 UTC (rev 4325)
@@ -126,7 +126,7 @@
 				sortTypes.add(orderByItem.isAscending());
 				nullOrderings.add(orderByItem.getNullOrdering());
 			}
-            if (items.size() < schema.size() && mode != Mode.SORT) {
+            if (items.size() < schema.size() && mode == Mode.DUP_REMOVE_SORT) {
 	        	List<Expression> toAdd = new ArrayList<Expression>(schema);
 	        	toAdd.removeAll(sortElements);
 	        	sortElements.addAll(toAdd);

Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java	2012-08-14 18:27:24 UTC (rev 4324)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java	2012-08-15 14:51:07 UTC (rev 4325)
@@ -37,6 +37,7 @@
 import org.teiid.query.optimizer.TestOptimizer;
 import org.teiid.query.optimizer.TestOptimizer.ComparisonMode;
 import org.teiid.query.optimizer.capabilities.BasicSourceCapabilities;
+import org.teiid.query.optimizer.capabilities.DefaultCapabilitiesFinder;
 import org.teiid.query.optimizer.capabilities.FakeCapabilitiesFinder;
 import org.teiid.query.optimizer.capabilities.SourceCapabilities.Capability;
 import org.teiid.query.processor.relational.JoinNode;
@@ -949,5 +950,33 @@
         // Run query
         TestProcessor.helpProcess(plan, dataManager, expected);
     }
-    
+	
+    @Test public void testIndependentDupRemoval() { 
+        // Create query 
+        String sql = "SELECT pm1.g1.e1, pm1.g1.e2, pm2.g1.e2 FROM pm1.g1, pm2.g1 WHERE pm2.g1.e1=pm1.g1.e1 AND pm1.g1.e2<pm2.g1.e2 order by pm1.g1.e1 option makedep pm1.g1"; //$NON-NLS-1$
+        
+        // Create expected results
+        List[] expected = new List[] { 
+            Arrays.asList(new Object[] { "a", 0, 3 }), //$NON-NLS-1$
+            Arrays.asList(new Object[] { "a", 0, 3 }), //$NON-NLS-1$
+        };   
+        
+        BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities();
+        caps.setSourceProperty(Capability.MAX_IN_CRITERIA_SIZE, 1);
+        caps.setSourceProperty(Capability.MAX_DEPENDENT_PREDICATES, 1);
+        caps.setCapabilitySupport(Capability.QUERY_ORDERBY, false);
+
+        QueryMetadataInterface fakeMetadata = RealMetadataFactory.example1Cached();
+
+        Command command = TestProcessor.helpParse(sql);
+        ProcessorPlan plan = TestProcessor.helpGetPlan(command, fakeMetadata, new DefaultCapabilitiesFinder(caps));
+        
+        // Construct data manager with data
+        FakeDataManager dataManager = new FakeDataManager();
+        TestProcessor.sampleData1(dataManager);
+        
+        // Run query
+        TestProcessor.helpProcess(plan, dataManager, expected);
+    }
+  
 }

Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/processor/relational/TestSortNode.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/processor/relational/TestSortNode.java	2012-08-14 18:27:24 UTC (rev 4324)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/relational/TestSortNode.java	2012-08-15 14:51:07 UTC (rev 4325)
@@ -245,24 +245,16 @@
     @Test public void testBasicSortRemoveDup() throws Exception {
         List[] expected = new List[] { 
             Arrays.asList(new Object[] { new Integer(0), "0" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(0), "3" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(1), "2" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(1), "5" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(2), "1" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(2), "4" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(3), "3" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(3), "6" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(4), "3" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(5), "2" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(5), "5" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(6), "1" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(6), "4" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(7), "3" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(8), "2" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(9), "1" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(9), "5" }),    //$NON-NLS-1$
             Arrays.asList(new Object[] { new Integer(10), "4" }),    //$NON-NLS-1$
-            Arrays.asList(new Object[] { new Integer(10), "9" })                //$NON-NLS-1$
         };
 
         helpTestBasicSort(expected, Mode.DUP_REMOVE);



More information about the teiid-commits mailing list