提交 81c3507b 编写于 作者: T tristaZero

to AppendOrderByItems or not

上级 27c86b1a
......@@ -49,6 +49,7 @@ public final class SelectOptimizer implements SQLStatementOptimizer {
@Override
public void optimize(final SQLStatement sqlStatement, final ShardingTableMetaData shardingTableMetaData) {
appendDerivedColumns((SelectStatement) sqlStatement, shardingTableMetaData);
appendDerivedOrderBy((SelectStatement) sqlStatement);
addSubqueryCondition(sqlStatement);
......@@ -170,6 +171,7 @@ public final class SelectOptimizer implements SQLStatementOptimizer {
private void appendDerivedOrderBy(final SelectStatement selectStatement) {
if (!selectStatement.getGroupByItems().isEmpty() && selectStatement.getOrderByItems().isEmpty()) {
selectStatement.getOrderByItems().addAll(selectStatement.getGroupByItems());
selectStatement.setToAppendOrderByItems(true);
}
}
......
......@@ -61,6 +61,8 @@ public final class SelectStatement extends DQLStatement {
private final List<OrderByItemSegment> orderByItems = new LinkedList<>();
private boolean toAppendOrderByItems;
private boolean containStar;
private int firstSelectItemStartIndex;
......@@ -69,7 +71,7 @@ public final class SelectStatement extends DQLStatement {
private int groupByLastIndex;
private LimitSegment limit;
private LimitSegment limit;
private SelectStatement parentStatement;
......
......@@ -35,7 +35,7 @@ public final class OrderByTokenGenerator implements OptionalSQLTokenGenerator<Sh
if (!(sqlStatement instanceof SelectStatement)) {
return Optional.absent();
}
if (!((SelectStatement) sqlStatement).getGroupByItems().isEmpty() && ((SelectStatement) sqlStatement).getOrderByItems().isEmpty()) {
if (((SelectStatement) sqlStatement).isToAppendOrderByItems()) {
return Optional.of(new OrderByToken(((SelectStatement) sqlStatement).getGroupByLastIndex() + 1));
}
return Optional.absent();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册