[teiid-commits] teiid SVN: r3647 - in trunk: test-integration/common/src/test/java/org/teiid/transport and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sun Nov 13 22:13:36 EST 2011


Author: shawkins
Date: 2011-11-13 22:13:36 -0500 (Sun, 13 Nov 2011)
New Revision: 3647

Modified:
   trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java
   trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java
Log:
TEIID-1812 fix for indexoutofbounds exception

Modified: trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java
===================================================================
--- trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java	2011-11-14 03:12:43 UTC (rev 3646)
+++ trunk/runtime/src/main/java/org/teiid/transport/PgBackendProtocol.java	2011-11-14 03:13:36 UTC (rev 3647)
@@ -801,7 +801,9 @@
 			initBuffer(estimatedLength);
 		}
 		this.dataOut.writeByte((byte)newMessageType);
-		this.dataOut.writerIndex(this.dataOut.writerIndex() + 4);
+		int nextByte = this.dataOut.writerIndex() + 4;
+		this.dataOut.ensureWritableBytes(nextByte);
+		this.dataOut.writerIndex(nextByte);
 	}
 
 	private void initBuffer(int estimatedLength) {

Modified: trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java	2011-11-14 03:12:43 UTC (rev 3646)
+++ trunk/test-integration/common/src/test/java/org/teiid/transport/TestODBCSocketTransport.java	2011-11-14 03:13:36 UTC (rev 3647)
@@ -221,6 +221,20 @@
 		String clob = rs.getString(1);
 		assertEquals(3000, clob.length());
 	}
+	
+	@Test public void testMultiRowBuffering() throws Exception {
+		Statement s = conn.createStatement();
+		StringBuilder sb = new StringBuilder();
+		for (int i = 0; i < 11; i++) {
+			sb.append("select '' union all ");
+		}
+		sb.append("select ''");
+		assertTrue(s.execute(sb.toString()));
+		ResultSet rs = s.getResultSet();
+		assertTrue(rs.next());
+		String str = rs.getString(1);
+		assertEquals(0, str.length());
+	}
 
 	@Test public void testTransactionCycle() throws Exception {
 		//TODO: drill in to ensure that the underlying statement has been set to autocommit false



More information about the teiid-commits mailing list