를 이행되지 않습니다, 그래서 같이 fetchSize를 설정합니다카산드라 .setFetchSize() 문에 나는 UI에 페이지 매김을 구현하려는
이boundStatement.setFetchSize(20)
그러나의 setFetchSize()가 이행되지 않습니다. 내 테이블에 지금 400 행이 있고 모든 400 행이 검색됩니다.
rs.getExecutionInfo().getPagingState();
을 사용하여 다음 행 세트를 검색하면 다음 380 행이 검색됩니다.
....
....
// "SELECT * FROM abc.sometable"
BoundStatement boundStatement = pStmt.bind();
boundStatement.setFetchSize(20);
if (pagingState != null) {
boundStatement.setPagingState(PagingState.fromString(pagingState));
}
ResultSet rs = session.execute(boundStatement);
PagingState nextPage = rs.getExecutionInfo().getPagingState();
int remaining = rs.getAvailableWithoutFetching();
List<?> list = new ArrayList<>();
for (Row row : rs) {
list.add(getValidObjectFromRow(row));
}
....
카산드라 : 그래서 페이징 상태가 올바르게 설정 및 검색, 그런데 왜 테이블에서 모든 400 개 행을 불러 오는 드라이버입니다 나는이 문제를 피하거나 할 수있는 방법은 코드의 400
부분을 검색 버전 - 3.7 및 카산드라 드라이버 버전 - 3.1.0
고마워!
ResultSet을 어떻게 소비하고 있습니까? 운전자가 표지 아래에서 다음 20 개의 열을 페이징 (paging) 할 수 있습니다. –
wireshark를 사용하면 쿼리/결과를보고 실제로 20 개의 청크로 가져 오는 지 확인할 수 있습니다. 더 많은 제어가 필요한 경우 쿼리에'LIMIT 20 '을 추가하고 수동으로 페이지를 추가하고자 할 수 있습니다. –
코드 블록으로 질문을 업데이트했습니다. – user1860447