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

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Aug 29 14:37:37 EDT 2011


Author: shawkins
Date: 2011-08-29 14:37:36 -0400 (Mon, 29 Aug 2011)
New Revision: 3430

Modified:
   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/relational/TestSortNode.java
Log:
TEIID-1731 fix for incorrect results

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	2011-08-27 01:51:27 UTC (rev 3429)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/SortUtility.java	2011-08-29 18:37:36 UTC (rev 3430)
@@ -324,7 +324,7 @@
 	            while (sublists.size() > 0) {
 	            	SortedSublist sortedSublist = sublists.remove(sublists.size() - 1);
 	        		merged.addTuple(sortedSublist.tuple);
-	                if (this.output != null && sortedSublist.index > masterSortIndex) {
+	                if (this.output != null && masterSortIndex < maxSortIndex && sortedSublist.index != masterSortIndex) {
 	                	this.output.addTuple(sortedSublist.tuple); //a new distinct row
 	            	}
 	            	incrementWorkingTuple(sublists, sortedSublist);
@@ -339,7 +339,7 @@
 	            }
 	            merged.saveBatch();
 	            this.activeTupleBuffers.add(merged);           
-	            masterSortIndex = masterSortIndex - maxSortIndex + 1;
+	            masterSortIndex = masterSortIndex - maxSortIndex;
 	            if (masterSortIndex < 0) {
 	            	masterSortIndex = this.activeTupleBuffers.size() - 1;
 	            }

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	2011-08-27 01:51:27 UTC (rev 3429)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/relational/TestSortNode.java	2011-08-29 18:37:36 UTC (rev 3430)
@@ -46,7 +46,7 @@
 import org.teiid.query.sql.symbol.ElementSymbol;
 import org.teiid.query.util.CommandContext;
 
-
+ at SuppressWarnings("unchecked")
 public class TestSortNode {
     
     public static final int BATCH_SIZE = 100;
@@ -321,4 +321,37 @@
     	assertEquals(Arrays.asList(2), ts.nextTuple());
     }
     
+    @Test public void testDupRemoveLowMemory() throws Exception {
+    	ElementSymbol es1 = new ElementSymbol("e1"); //$NON-NLS-1$
+        es1.setType(DataTypeManager.DefaultDataClasses.INTEGER);
+        BufferManager bm = BufferManagerFactory.getTestBufferManager(0, 2);
+        TupleBuffer tsid = bm.createTupleBuffer(Arrays.asList(es1), "test", TupleSourceType.PROCESSOR); //$NON-NLS-1$
+        tsid.addTuple(Arrays.asList(1));
+        tsid.addTuple(Arrays.asList(2));
+    	SortUtility su = new SortUtility(tsid.createIndexedTupleSource(), Arrays.asList(es1), Arrays.asList(Boolean.TRUE), Mode.DUP_REMOVE, bm, "test", tsid.getSchema()); //$NON-NLS-1$
+    	TupleBuffer out = su.sort();
+    	TupleSource ts = out.createIndexedTupleSource();
+    	assertEquals(Arrays.asList(1), ts.nextTuple());
+    	assertEquals(Arrays.asList(2), ts.nextTuple());
+    	try {
+    		ts.nextTuple();
+    		fail();
+    	} catch (BlockedException e) {
+    		
+    	}
+    	tsid.addTuple(Arrays.asList(3));
+    	tsid.addTuple(Arrays.asList(4));
+    	tsid.addTuple(Arrays.asList(5));
+    	tsid.addTuple(Arrays.asList(6));
+    	tsid.addTuple(Arrays.asList(6));
+    	tsid.addTuple(Arrays.asList(6));
+    	tsid.close();
+    	su.sort();
+		ts.nextTuple();
+		ts.nextTuple();
+		assertNotNull(ts.nextTuple());
+		assertNotNull(ts.nextTuple());
+		assertNull(ts.nextTuple());
+    }
+
 }



More information about the teiid-commits mailing list