[teiid-commits] teiid SVN: r3772 - in branches/7.4.x/engine/src: test/java/org/teiid/dqp/internal/process and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Jan 4 16:48:28 EST 2012


Author: jolee
Date: 2012-01-04 16:48:27 -0500 (Wed, 04 Jan 2012)
New Revision: 3772

Modified:
   branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
   branches/7.4.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
Log:
TEIID-1884 fixing final row count when using foward only (corrected for 7.4.x after cherry-pick)

Modified: branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2012-01-04 20:32:38 UTC (rev 3771)
+++ branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java	2012-01-04 21:48:27 UTC (rev 3772)
@@ -503,8 +503,9 @@
 						return;
 					}
 					super.flushBatchDirect(batch, add);
-					//restrict the buffer size for forward only results
-					if (add && !processor.hasFinalBuffer()
+					if (!add && !processor.hasFinalBuffer()) {
+						 resultsBuffer.setRowCount(batch.getEndRow());
+					} else if (!processor.hasFinalBuffer() //restrict the buffer size for forward only results
 							&& !batch.getTerminationFlag() 
 							&& this.getTupleBuffer().getManagedRowCount() >= OUTPUT_BUFFER_MAX_BATCHES * this.getTupleBuffer().getBatchSize()) {
 						if (!dqpCore.hasWaitingPlans(RequestWorkItem.this)) {

Modified: branches/7.4.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2012-01-04 20:32:38 UTC (rev 3771)
+++ branches/7.4.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2012-01-04 21:48:27 UTC (rev 3772)
@@ -333,6 +333,24 @@
         assertEquals(100, item.resultsBuffer.getRowCount());
     }
     
+    @Test public void testFinalRow() throws Exception {
+        String sql = "SELECT A.IntKey FROM BQT1.SmallA as A"; //$NON-NLS-1$
+        String userName = "1"; //$NON-NLS-1$
+        String sessionid = "1"; //$NON-NLS-1$
+        
+        RequestMessage reqMsg = exampleRequestMessage(sql);
+        reqMsg.setCursorType(ResultSet.TYPE_FORWARD_ONLY);
+        DQPWorkContext.getWorkContext().getSession().setSessionId(sessionid);
+        DQPWorkContext.getWorkContext().getSession().setUserName(userName);
+        ((BufferManagerImpl)core.getBufferManager()).setProcessorBatchSize(10);
+        Future<ResultsMessage> message = core.executeRequest(reqMsg.getExecutionId(), reqMsg);
+        ResultsMessage rm = message.get(500000, TimeUnit.MILLISECONDS);
+        assertNull(rm.getException());
+        assertEquals(10, rm.getResults().length);
+        RequestWorkItem item = core.getRequestWorkItem(DQPWorkContext.getWorkContext().getRequestID(reqMsg.getExecutionId()));
+        assertEquals(10, item.resultsBuffer.getRowCount());
+    }
+    
     @Test public void testBufferReuse1() throws Exception {
     	//the sql should return 100 rows
         String sql = "SELECT IntKey FROM texttable('11\n12\n13\n14\n15' columns intkey integer) t " +



More information about the teiid-commits mailing list