#681 - Remove SqlQuery.cancel() ... migrate to SqlQuery.findEachWhile() and stop while iterating

This commit is contained in:
Robin Bygrave
2016-04-29 09:05:36 +12:00
parent 5cf2d3c39a
commit bf75af85c1
5 changed files with 42 additions and 144 deletions
@@ -3,13 +3,10 @@ package com.avaje.ebeaninternal.server.query;
import com.avaje.ebean.QueryEachConsumer;
import com.avaje.ebean.QueryEachWhileConsumer;
import com.avaje.ebean.SqlRow;
import com.avaje.ebeaninternal.api.SpiSqlQuery;
import com.avaje.ebeaninternal.server.core.Message;
import com.avaje.ebeaninternal.server.core.RelationalQueryEngine;
import com.avaje.ebeaninternal.server.core.RelationalQueryRequest;
import com.avaje.ebeaninternal.server.persist.Binder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.persistence.PersistenceException;
import java.sql.SQLException;
@@ -21,9 +18,6 @@ import java.util.List;
*/
public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
private static final Logger logger = LoggerFactory.getLogger(DefaultRelationalQueryEngine.class);
private final Binder binder;
private final String dbTrueValue;
@@ -78,9 +72,7 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
long startTime = System.currentTimeMillis();
try {
if (!request.executeSql(binder)) {
return null;
}
request.executeSql(binder);
int maxRows = request.getMaxRows();
@@ -88,23 +80,12 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
List<SqlRow> rows = new ArrayList<SqlRow>();
SpiSqlQuery query = request.getQuery();
while (request.next()) {
SqlRow bean;
synchronized (query) {
if (request.isCancelled()) {
break;
}
bean = readRow(request);
}
if (bean != null) {
rows.add(bean);
loadRowCount++;
if (loadRowCount == maxRows) {
// break, as we have hit the max rows to fetch...
break;
}
rows.add(readRow(request));
loadRowCount++;
if (loadRowCount == maxRows) {
// break, as we have hit the max rows to fetch...
break;
}
}
@@ -126,10 +107,6 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
long exeTime = System.currentTimeMillis() - startTime;
request.getTransaction().logSummary("SqlQuery rows[" + request.getRowCount() + "] time[" + exeTime + "] bind[" + request.getBindLog() + "]");
}
if (request.isCancelled()) {
logger.debug("Query was cancelled during execution rows: {}", request.getRowCount());
}
}
/**