[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