[teiid-commits] teiid SVN: r1240 - in trunk: client-jdbc/src/main/java/com/metamatrix/jdbc and 3 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Thu Aug 13 10:58:47 EDT 2009
Author: shawkins
Date: 2009-08-13 10:58:47 -0400 (Thu, 13 Aug 2009)
New Revision: 1240
Modified:
trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/BatchResults.java
trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java
trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMResultSet.java
trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestAllResultsImpl.java
trunk/client/src/main/java/com/metamatrix/dqp/message/ResultsMessage.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java
trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
trunk/engine/src/test/java/com/metamatrix/dqp/message/TestResultsMessage.java
Log:
TEIID-783 allowing fetchsize to be set on resultsets and removing batch caching for forward only iteration.
Modified: trunk/client/src/main/java/com/metamatrix/dqp/message/ResultsMessage.java
===================================================================
--- trunk/client/src/main/java/com/metamatrix/dqp/message/ResultsMessage.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/client/src/main/java/com/metamatrix/dqp/message/ResultsMessage.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -66,9 +66,6 @@
/** Last row index */
private int lastRow;
- /** Flag indicating whether this result set is part or all of the entire result set */
- private boolean partialResultsFlag;
-
/** Final row index in complete result set, if known */
private int finalRow = -1;
@@ -81,12 +78,6 @@
/** This object represents the time when results are produced on the server. */
private Date completedTimestamp;
- /** Fetch size for the results, if appropriate */
- private int fetchSize;
-
- /** Cursor type for the results, if appropriate */
- private int cursorType;
-
/** OPTION DEBUG log if OPTION DEBUG was used */
private String debugLog;
@@ -115,8 +106,6 @@
if(requestMsg != null){
this.processingTimestamp = requestMsg.getProcessingTimestamp();
this.completedTimestamp = new Date();
- this.fetchSize = requestMsg.getFetchSize();
- this.cursorType = requestMsg.getCursorType();
}
this.results = new ArrayList[0];
@@ -127,7 +116,6 @@
setResults( results );
setFirstRow( 1 );
setLastRow( results.length );
- setPartialResults( false );
this.columnNames = columnNames;
this.dataTypes = dataTypes;
@@ -180,13 +168,6 @@
/**
* @return
*/
- public boolean isPartialResults() {
- return partialResultsFlag;
- }
-
- /**
- * @return
- */
public Map getPlanDescription() {
return planDescription;
}
@@ -239,13 +220,6 @@
}
/**
- * @param b
- */
- public void setPartialResults(boolean b) {
- partialResultsFlag = b;
- }
-
- /**
* @param object
*/
public void setPlanDescription(Map object) {
@@ -301,34 +275,6 @@
this.dataTypes = dataTypes;
}
- /**
- * @return
- */
- public int getFetchSize() {
- return fetchSize;
- }
-
- /**
- * @param i
- */
- public void setFetchSize(int fetchSize) {
- this.fetchSize = fetchSize;
- }
-
- /**
- * @return
- */
- public int getCursorType() {
- return cursorType;
- }
-
- /**
- * @param i
- */
- public void setCursorType(int cursorType) {
- this.cursorType = cursorType;
- }
-
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
columnNames = ExternalizeUtil.readStringArray(in);
@@ -354,7 +300,6 @@
firstRow = in.readInt();
lastRow = in.readInt();
- partialResultsFlag = in.readBoolean();
finalRow = in.readInt();
//Parameters
@@ -362,8 +307,6 @@
processingTimestamp = (Date)in.readObject();
completedTimestamp = (Date)in.readObject();
- fetchSize = in.readInt();
- cursorType = in.readInt();
debugLog = (String)in.readObject();
annotations = (Collection)in.readObject();
isUpdateResult = in.readBoolean();
@@ -395,7 +338,6 @@
ExternalizeUtil.writeCollection(out, schemas);
out.writeInt(firstRow);
out.writeInt(lastRow);
- out.writeBoolean(partialResultsFlag);
out.writeInt(finalRow);
// Parameters
@@ -403,8 +345,6 @@
out.writeObject(processingTimestamp);
out.writeObject(completedTimestamp);
- out.writeInt(fetchSize);
- out.writeInt(cursorType);
out.writeObject(debugLog);
out.writeObject(annotations);
out.writeBoolean(isUpdateResult);
Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/BatchResults.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/BatchResults.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/BatchResults.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -67,22 +67,24 @@
}
}
+
+ static final int DEFAULT_SAVED_BATCHES = 3;
- private static final int SAVED_BATCHES = 3;
-
- private ArrayList<Batch> batches = new ArrayList<Batch>(SAVED_BATCHES + 1);
+ private ArrayList<Batch> batches = new ArrayList<Batch>();
private int currentRowNumber;
private int lastRowNumber = -1;
private int highestRowNumber;
private BatchFetcher batchFetcher;
+ private int savedBatches = DEFAULT_SAVED_BATCHES;
public BatchResults(List[] batch, int beginRow, int endRow, boolean isLast) {
this.setBatch(new Batch(batch, beginRow, endRow, isLast));
}
- public BatchResults(BatchFetcher batchFetcher, Batch batch) {
+ public BatchResults(BatchFetcher batchFetcher, Batch batch, int savedBatches) {
this.batchFetcher = batchFetcher;
+ this.savedBatches = savedBatches;
this.setBatch(batch);
}
@@ -197,6 +199,9 @@
}
private void requestBatchAndWait(int beginRow) throws SQLException{
+ if (batches.size() == savedBatches) {
+ batches.remove(savedBatches - 1);
+ }
setBatch(batchFetcher.requestBatch(beginRow));
}
@@ -207,9 +212,6 @@
}
highestRowNumber = Math.max(batch.getEndRow(), highestRowNumber);
this.batches.add(0, batch);
- if (batches.size() > SAVED_BATCHES) {
- batches.remove(SAVED_BATCHES);
- }
}
public boolean hasNext() throws SQLException {
Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMDatabaseMetaData.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -124,8 +124,6 @@
final private static class RUNTIME_MODEL{
public final static String VIRTUAL_MODEL_NAME = "System"; //$NON-NLS-1$
- public final static String ODBC_SYSTEM_MODEL_NAME = "System.ODBC"; //$NON-NLS-1$
- public final static String WSDL_SYSTEM_MODEL_NAME = "DataServiceSystemModel"; //$NON-NLS-1$
public final static String JDBC_SYSTEM_MODEL_NAME = "System.JDBC"; //$NON-NLS-1$
}
@@ -508,13 +506,10 @@
ResultsMessage resultsMsg = new ResultsMessage();
resultsMsg.setColumnNames(columnNames);
resultsMsg.setDataTypes(dataTypes);
- resultsMsg.setPartialResults(false);
resultsMsg.setFirstRow(1);
resultsMsg.setLastRow(records.size());
resultsMsg.setFinalRow(records.size());
resultsMsg.setResults((List[])records.toArray(new List[records.size()]));
- resultsMsg.setFetchSize(500);
-
return resultsMsg;
}
Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMResultSet.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMResultSet.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMResultSet.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -122,9 +122,9 @@
// server latency-related timestamp
this.processingTimestamp = resultsMsg.getProcessingTimestamp();
this.requestID = statement.getCurrentRequestID();
- this.batchResults = new BatchResults(this, getCurrentBatch(resultsMsg));
+ this.cursorType = statement.getResultSetType();
+ this.batchResults = new BatchResults(this, getCurrentBatch(resultsMsg), this.cursorType == ResultSet.TYPE_FORWARD_ONLY ? 1 : BatchResults.DEFAULT_SAVED_BATCHES);
setResultsData(resultsMsg);
- cursorType = statement.getResultSetType();
this.serverTimeZone = statement.getServerTimeZone();
if (metadata == null) {
@@ -142,7 +142,7 @@
if (this.parameters > 0) {
rmetadata = FilteredResultsMetadata.newInstance(rmetadata, resultColumns);
}
- this.fetchSize = resultsMsg.getFetchSize();
+ this.fetchSize = statement.getFetchSize();
}
public void setMaxFieldSize(int maxFieldSize) {
Modified: trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
===================================================================
--- trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -662,7 +662,6 @@
*/
public void setFetchDirection(int direction) throws SQLException {
checkStatement();
- this.fetchDirection = direction;
}
/**
Modified: trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestAllResultsImpl.java
===================================================================
--- trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestAllResultsImpl.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/client-jdbc/src/test/java/com/metamatrix/jdbc/TestAllResultsImpl.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -52,7 +52,6 @@
private static final long REQUEST_ID = 0;
private static final int TYPE_FORWARD_ONLY = ResultSet.TYPE_FORWARD_ONLY;
private static final int TYPE_SCROLL_SENSITIVE = ResultSet.TYPE_SCROLL_SENSITIVE;
- private static final int TYPE_SCROLL_INSENSITIVE = ResultSet.TYPE_SCROLL_INSENSITIVE;
private MMStatement statement;
@@ -290,15 +289,13 @@
verify(statement, times(0)).close();
}
- public void testGetFetchSize() {
- try {
- MMResultSet rs = new MMResultSet(exampleResultsMsg2(),
- statement);
- assertEquals(500, rs.getFetchSize());
- rs.close();
- } catch (SQLException se) {
- // should never happen;
- }
+ public void testGetFetchSize() throws Exception {
+ MMStatement s = mock(MMStatement.class);
+ stub(s.getFetchSize()).toReturn(500);
+ MMResultSet rs = new MMResultSet(exampleResultsMsg2(), s);
+ assertEquals(500, rs.getFetchSize());
+ rs.setFetchSize(100);
+ assertEquals(100, rs.getFetchSize());
}
// //////////////////////Functions refer to ResultSet's TYPE_FORWARD_ONLY///
@@ -778,7 +775,7 @@
MetaMatrixProcessingException, SQLException {
ClientSideDQP dqp = mock(ClientSideDQP.class);
stub(statement.getDQP()).toReturn(dqp);
-
+ stub(statement.getFetchSize()).toReturn(fetchSize);
for (int i = batchLength; i < totalLength; i += batchLength) {
//forward requests
ResultsFuture<ResultsMessage> nextBatch = mock(ResultsFuture.class);
@@ -843,14 +840,12 @@
private MMResultSet helpGetResultSetImpl(int type)
throws SQLException {
ResultsMessage rsMsg = exampleResultsMsg2();
- rsMsg.setCursorType(type);
MMResultSet rs = new MMResultSet(rsMsg, statement);
return rs;
}
private MMResultSet helpGetNoResults(int type) throws SQLException {
ResultsMessage rsMsg = exampleResultsMsg3();
- rsMsg.setCursorType(type);
MMResultSet rs = new MMResultSet(rsMsg, statement);
return rs;
}
@@ -870,8 +865,6 @@
resultsMsg.setFinalRow(results.length);
resultsMsg.setLastRow(results.length);
resultsMsg.setFirstRow(1);
- resultsMsg.setFetchSize(500);
- resultsMsg.setCursorType(TYPE_SCROLL_INSENSITIVE);
return resultsMsg;
}
@@ -891,9 +884,6 @@
resultsMsg.setFinalRow(results.length);
resultsMsg.setLastRow(results.length);
resultsMsg.setFirstRow(1);
- resultsMsg.setFetchSize(500);
- resultsMsg.setCursorType(TYPE_SCROLL_INSENSITIVE);
-
return resultsMsg;
}
@@ -911,14 +901,11 @@
resultsMsg.setResults(results);
resultsMsg.setColumnNames(new String[] { "IntKey" }); //$NON-NLS-1$
resultsMsg.setDataTypes(new String[] { MMJDBCSQLTypeInfo.INTEGER });
- resultsMsg.setPartialResults(false);
resultsMsg.setFirstRow(begin);
if (lastBatch) {
resultsMsg.setFinalRow(begin + results.length - 1);
}
resultsMsg.setLastRow(begin + results.length - 1);
- resultsMsg.setFetchSize(fetchSize);
- resultsMsg.setCursorType(TYPE_SCROLL_INSENSITIVE);
return resultsMsg;
}
@@ -942,12 +929,9 @@
resultsMsg.setResults(new List[] {Arrays.asList(new Timestamp(0))});
resultsMsg.setColumnNames(new String[] { "TS" }); //$NON-NLS-1$
resultsMsg.setDataTypes(new String[] { MMJDBCSQLTypeInfo.TIMESTAMP });
- resultsMsg.setPartialResults(false);
resultsMsg.setFirstRow(1);
resultsMsg.setFinalRow(1);
resultsMsg.setLastRow(1);
- resultsMsg.setFetchSize(1);
- resultsMsg.setCursorType(TYPE_SCROLL_INSENSITIVE);
MMResultSet rs = new MMResultSet(resultsMsg, statement);
assertTrue(rs.next());
//assumes the mock statement is setup with GMT-5 server and GMT-6 client
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/CachedRequestWorkItem.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -83,7 +83,6 @@
if(isFinal){
response.setFinalRow(cResult.getFinalRow());
}
- response.setPartialResults(!isFinal);
this.resultsCursor.resultsSent();
this.resultsReceiver.receiveResults(response);
Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/process/RequestWorkItem.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -447,13 +447,6 @@
response.setUpdateResult(this.returnsUpdateCount);
// set final row
response.setFinalRow(finalRowCount);
- // Results are partial if the rowcount is not yet known,
- // or if the last row of this batch is less than the row count
- boolean isPartialResultSet = finalRowCount < 0
- || batch.getEndRow() < finalRowCount;
-
- // set parital result
- response.setPartialResults(isPartialResultSet);
// send any schemas associated with the results
response.setSchemas(this.schemas);
Modified: trunk/engine/src/test/java/com/metamatrix/dqp/message/TestResultsMessage.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/dqp/message/TestResultsMessage.java 2009-08-13 03:32:14 UTC (rev 1239)
+++ trunk/engine/src/test/java/com/metamatrix/dqp/message/TestResultsMessage.java 2009-08-13 14:58:47 UTC (rev 1240)
@@ -50,7 +50,6 @@
DataTypeManager.DefaultDataTypes.BIG_INTEGER,
DataTypeManager.DefaultDataTypes.BIG_INTEGER,
DataTypeManager.DefaultDataTypes.BIG_INTEGER});
- message.setFetchSize(100);
message.setFinalRow(200);
message.setFirstRow(1);
message.setLastRow(100);
@@ -58,7 +57,6 @@
parameters.add(new ParameterInfo(ParameterInfo.IN, 0));
parameters.add(new ParameterInfo(ParameterInfo.RESULT_SET, 5));
message.setParameters(parameters);
- message.setPartialResults(false);
Map planDescs = new HashMap();
planDescs.put("key1", "val1"); //$NON-NLS-1$ //$NON-NLS-2$
planDescs.put("key2", "val2"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -103,7 +101,6 @@
assertEquals(DataTypeManager.DefaultDataTypes.BIG_INTEGER, copy.getDataTypes()[2]);
assertEquals(DataTypeManager.DefaultDataTypes.BIG_INTEGER, copy.getDataTypes()[3]);
- assertEquals(100, copy.getFetchSize());
assertEquals(200, copy.getFinalRow());
assertEquals(1, copy.getFirstRow());
assertEquals(100, copy.getLastRow());
@@ -117,8 +114,6 @@
assertEquals(ParameterInfo.RESULT_SET, info2.getType());
assertEquals(5, info2.getNumColumns());
- assertFalse(copy.isPartialResults());
-
assertNotNull(copy.getPlanDescription());
assertEquals(4, copy.getPlanDescription().size());
assertTrue(copy.getPlanDescription().containsKey("key1")); //$NON-NLS-1$
More information about the teiid-commits
mailing list