-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/42067/
-----------------------------------------------------------

(Updated Feb. 3, 2016, 7:05 a.m.)


Review request for lens.


Changes
-------

- Updated Test Case to include all important methods of 
PartiallyFetchedInMemoryResultSet .
- Removed seekToStart() form InMemoryResultSet ( since its not used and only 
few drivers can support this feature. Can be added aback when we decide to 
support the feature end to end)
- Removed unused member 
PartiallyFetchedInMemoryResultSet.doNotPurgeUntilTimeMillis


Bugs: lens-901
    https://issues.apache.org/jira/browse/lens-901


Repository: lens


Description
-------

support streaming results on lens


Diffs (updated)
-----

  
lens-api/src/main/java/org/apache/lens/api/query/QueryHandleWithResultSet.java 
a5da867 
  lens-api/src/main/java/org/apache/lens/api/query/QueryStatus.java 44fd97e 
  
lens-driver-es/src/main/java/org/apache/lens/driver/es/client/ESResultSet.java 
464b535 
  lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveDriver.java 
149c6ab 
  
lens-driver-hive/src/main/java/org/apache/lens/driver/hive/HiveInMemoryResultSet.java
 f8abd78 
  lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCDriver.java 
82d7513 
  lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/JDBCResultSet.java 
8b4da3f 
  
lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java 
b96cf88 
  
lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java 
8df389b 
  
lens-server-api/src/main/java/org/apache/lens/server/api/driver/AbstractLensDriver.java
 ed1fc43 
  
lens-server-api/src/main/java/org/apache/lens/server/api/driver/InMemoryResultSet.java
 f6434da 
  
lens-server-api/src/main/java/org/apache/lens/server/api/driver/PartiallyFetchedInMemoryResultSet.java
 PRE-CREATION 
  
lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
 1269e45 
  
lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java 
a20cf47 
  
lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
 e61398b 
  lens-server/src/main/resources/lenssession-default.xml a321c3f 
  lens-server/src/test/java/org/apache/lens/server/query/TestLensDAO.java 
01e846a 
  lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java 
ef8c1aa 
  
lens-server/src/test/java/org/apache/lens/server/query/TestResultFormatting.java
 30d1e34 
  src/site/apt/admin/session-config.apt e108a13 

Diff: https://reviews.apache.org/r/42067/diff/


Testing
-------

Three properties have been added to enable streaming

* lens.query.prefetch.inmemory.resultset 
When set to true, specified number of rows of in-memory result set will be 
pre-fetched

* lens.query.prefetch.inmemory.resultset.rows
Specifies the number of rows to pre-fetch for in-memory result set when 
lens.query.prefetch.inmemory.resultset is set to true. Default value is 100 
rows.

* lens.query.prefetch.inmemory.resultset.ttl.millis Specifies the time in milli 
seconds starting from query submission time for which the pre-fetched in-memory 
result set will not be purged. This property is put to action only when 
lens.query.prefetch.inmemory.resultset is set to true and all rows of the in 
memory result set have been pre-fetched. The default value of this property is 
60 secs.

Streaming(pre-fetched) result set is available in case the above proerties are 
set and the result is a type of InMemoryResultSet. Further, the streming is 
enabled only when all result rows have been prefetched.Partial Streaming not 
supported as of now  (Can be enabled  in furtue is there is a clear use case 
for it)

Also note QueryHandleWithResultSet will now hold result metadta 
(QueryResultSetMetadata) also. 
This info will be useful for client in case the streaming results are accesesd 
via execute_with_timeout API (REST End Point /queryapi/queries POST )

It is suggested to use this feature for queries that finish fast and return 
small number of rows. Streaming and persistence by server can happen parallely 
for streamed result sets.

Will add more details on **Testing** done . Was able to build and run 
checkstyle. Also ran the added test cases for this feature. 

**TODO** PartiallyFetchedInMemoryResultSet can override 
InMemoryResultSet.toQueryResult() and optimize the case where result has been 
completely fetched already.


Thanks,

Puneet Gupta

Reply via email to