传递给该方法的查询只返回10行用于UT目的,尽管该表有数百万行。在方法中,我将maxresult设置为5,以便我需要调用该方法两次,然后第三个应该不返回任何内容,无论我做什么,无论查询返回多少行或者setmaxresult为1或10,pagetoken都是相同的。
另一件事是它总是返回相同的结果集,虽然pagetoken应该是下一页。
非常感谢任何澄清!
UT;
String query="SELECT customer_id, email_domain FROM datamart.customer_fact limit 10;";
List<TableRow> tr1 = bq.GetRowsBQTable(query);
List<TableRow> tr2 = bq.GetRowsBQTable(query);
List<TableRow> tr3 = bq.GetRowsBQTable(query);
方法:
public List<TableRow> GetRowsBQTable(String Query) throws IOException
{
if (isDrained) {
isDrained=false;
QueryRequest queryRequest = new QueryRequest().setQuery(Query);
queryRequest.setMaxResults(maxResults);
queryResponse = bq.jobs().query(bqProjectId, queryRequest).execute();
if (queryResponse.getJobComplete()) {
List<TableRow> tr= queryResponse.getRows();
pageToken = queryResponse.getPageToken();
return tr;
}
}
else
{
GetQueryResultsResponse queryResults = bq.jobs()
.getQueryResults(bqProjectId, queryResponse.getJobReference().getJobId())
.setPageToken(pageToken).execute();
if (queryResults.getJobComplete()) {
List<TableRow> tr= queryResponse.getRows();
pageToken = queryResponse.getPageToken();
return tr;
}
}
return null;
}