[teiid-commits] teiid SVN: r2885 - in branches/7.3.x/client/src: test/java/org/teiid/jdbc and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Jan 31 09:52:07 EST 2011


Author: shawkins
Date: 2011-01-31 09:52:07 -0500 (Mon, 31 Jan 2011)
New Revision: 2885

Modified:
   branches/7.3.x/client/src/main/java/org/teiid/jdbc/ResultSetImpl.java
   branches/7.3.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java
   branches/7.3.x/client/src/test/java/org/teiid/jdbc/TestAllResultsImpl.java
Log:
TEIID-1456 checking for execution exceptions on resultset results and adding some logging

Modified: branches/7.3.x/client/src/main/java/org/teiid/jdbc/ResultSetImpl.java
===================================================================
--- branches/7.3.x/client/src/main/java/org/teiid/jdbc/ResultSetImpl.java	2011-01-30 14:53:25 UTC (rev 2884)
+++ branches/7.3.x/client/src/main/java/org/teiid/jdbc/ResultSetImpl.java	2011-01-31 14:52:07 UTC (rev 2885)
@@ -48,6 +48,7 @@
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.teiid.client.ResultsMessage;
@@ -146,6 +147,9 @@
 			rmetadata = new FilteredResultsMetadata(rmetadata, resultColumns);
 		}
 		this.fetchSize = statement.getFetchSize();
+		if (logger.isLoggable(Level.FINER)) {
+			logger.finer("Creating ResultSet requestID: " + requestID + " beginRow: " + resultsMsg.getFirstRow() + " resultsColumns: " + resultColumns + " parameters: " + parameters); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+		}
 	}
 	
 	public void setMaxFieldSize(int maxFieldSize) {
@@ -356,7 +360,9 @@
     }
     
     public Batch requestBatch(int beginRow) throws SQLException{
-    	logger.fine("CursorResultsImpl.requestBatch] thread name: " + Thread.currentThread().getName() + " requestID: " + requestID + " beginRow: " + beginRow ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+    	if (logger.isLoggable(Level.FINER)) {
+    		logger.finer("requestBatch requestID: " + requestID + " beginRow: " + beginRow ); //$NON-NLS-1$ //$NON-NLS-2$
+    	}
     	checkClosed();
         try {
         	ResultsFuture<ResultsMessage> results = statement.getDQP().processCursorRequest(requestID, beginRow, fetchSize);
@@ -365,6 +371,11 @@
         		timeoutSeconds = Integer.MAX_VALUE;
         	}
         	ResultsMessage currentResultMsg = results.get(timeoutSeconds, TimeUnit.SECONDS);
+        	
+            if (currentResultMsg.getException() != null) {
+                throw TeiidSQLException.create(currentResultMsg.getException());
+            }
+
     		this.accumulateWarnings(currentResultMsg);
     		return getCurrentBatch(currentResultMsg);
         } catch (TeiidProcessingException e) {

Modified: branches/7.3.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java
===================================================================
--- branches/7.3.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2011-01-30 14:53:25 UTC (rev 2884)
+++ branches/7.3.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java	2011-01-31 14:52:07 UTC (rev 2885)
@@ -28,6 +28,7 @@
 import java.sql.SQLException;
 import java.sql.SQLWarning;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Collections;
@@ -387,7 +388,9 @@
         throws SQLException {
         checkStatement();
         resetExecutionState();
-        
+        if (logger.isLoggable(Level.FINER)) {
+			logger.finer("Executing: requestID " + getCurrentRequestID() + " commands: " + Arrays.toString(commands) + " expecting: " + resultsMode); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		}
         if (commands.length == 1) {
         	Matcher match = SET_STATEMENT.matcher(commands[0]);
         	if (match.matches()) {
@@ -406,6 +409,7 @@
         	}
         	match = TRANSACTION_STATEMENT.matcher(commands[0]);
         	if (match.matches()) {
+    			logger.finer("Executing as transaction statement"); //$NON-NLS-1$
         		if (resultsMode == ResultsMode.RESULTSET) {
         			throw new TeiidSQLException(JDBCPlugin.Util.getString("StatementImpl.set_result_set")); //$NON-NLS-1$
         		}
@@ -422,6 +426,7 @@
         	}
         	match = SHOW_STATEMENT.matcher(commands[0]);
         	if (match.matches()) {
+    			logger.finer("Executing as show statement"); //$NON-NLS-1$
         		if (resultsMode == ResultsMode.UPDATECOUNT) {
         			throw new TeiidSQLException(JDBCPlugin.Util.getString("StatementImpl.show_update_count")); //$NON-NLS-1$
         		}
@@ -503,7 +508,9 @@
             for (int i = 0; i < results.length; i++) {
             	updateCounts[i] = (Integer)results[i].get(0);
             }
-            
+            if (logger.isLoggable(Level.FINER)) {
+            	logger.fine(JDBCPlugin.Util.getString("Recieved update counts: " + Arrays.toString(updateCounts))); //$NON-NLS-1$
+            }
             // In update scenarios close the statement implicitly
             try {
 				getDQP().closeRequest(getCurrentRequestID());

Modified: branches/7.3.x/client/src/test/java/org/teiid/jdbc/TestAllResultsImpl.java
===================================================================
--- branches/7.3.x/client/src/test/java/org/teiid/jdbc/TestAllResultsImpl.java	2011-01-30 14:53:25 UTC (rev 2884)
+++ branches/7.3.x/client/src/test/java/org/teiid/jdbc/TestAllResultsImpl.java	2011-01-31 14:52:07 UTC (rev 2885)
@@ -41,6 +41,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Matchers;
+import org.mockito.Mockito;
 import org.teiid.client.DQP;
 import org.teiid.client.RequestMessage;
 import org.teiid.client.ResultsMessage;
@@ -696,6 +697,19 @@
 			assertTrue(rs.previous());
 		}
 	}
+    
+    @Test(expected=TeiidSQLException.class) public void testResultsMessageException() throws Exception {
+        ResultsMessage resultsMsg = exampleMessage(exampleResults1(1), new String[] { "IntNum" }, new String[] { JDBCSQLTypeInfo.INTEGER }); //$NON-NLS-1$
+        resultsMsg.setFinalRow(-1);
+        ResultsMessage next = new ResultsMessage();
+        next.setException(new Throwable());
+        ResultsFuture<ResultsMessage> rf = new ResultsFuture<ResultsMessage>();
+        rf.getResultsReceiver().receiveResults(next);
+        Mockito.stub(statement.getDQP().processCursorRequest(0, 2, 0)).toReturn(rf);
+        ResultSetImpl cs = new ResultSetImpl(resultsMsg, statement, null, 2);
+        cs.next();
+        cs.next();
+    }
 	
 	static ResultSetImpl helpTestBatching(StatementImpl statement, int fetchSize, int batchLength,
 			int totalLength) throws InterruptedException, ExecutionException,



More information about the teiid-commits mailing list