[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