/** * @see http://dev.mysql.com/doc/refman/5.7/en/select.html */ @Override public SQLTranslated translate(Select select, ObjectNode executionOn, Map<ObjectNode, Map<TableFilter, ObjectNode>> consistencyTableNodes) { ArrayList<Expression> expressions = select.getExpressions(); Expression[] exprList = expressions.toArray(new Expression[expressions.size()]); Expression limitExpr = select.getLimit(); Expression offsetExpr = select.getOffset(); Integer limit = null, offset = null; if (limitExpr != null) { limit = limitExpr.getValue(select.getSession()).getInt(); } if (offsetExpr != null) { offset = offsetExpr.getValue(select.getSession()).getInt(); } return translate(select, executionOn, consistencyTableNodes, exprList, limit, offset); }
public void resetResult(ResultTarget result) { if(!isPrepared()) { throw DbException.throwInternalError("executor not prepared."); } if (result instanceof LocalResult) { LocalResult r = (LocalResult) result; if (limitPushless) { Expression offsetExpr = prepared.getOffset(); SortOrder sortOrder = prepared.getSortOrder(); int offset = offsetExpr.getValue(session).getInt(); if(sortOrder == null) { //drop offset rows if sortOrder is null while (offset-- > 0) { if (!next()) { break; } } r.setOffset(0); } } else { r.setOffset(0); } } }
Integer limit = null, offset = null; Expression limitExpr = prepared.getLimit(); Expression offsetExpr = prepared.getOffset(); if (limitExpr != null) { limit = limitExpr.getValue(session).getInt();