未验证 提交 9b02c913 编写于 作者: L Liang Zhang 提交者: GitHub

Merge pull request #2509 from tristaZero/dev

move sqltoken to rewrite package
......@@ -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);
}
}
......
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.parse.sql.statement;
import com.google.common.base.Optional;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
......@@ -27,12 +26,9 @@ import org.apache.shardingsphere.core.constant.SQLType;
import org.apache.shardingsphere.core.parse.sql.context.condition.ParseCondition;
import org.apache.shardingsphere.core.parse.sql.context.table.Tables;
import org.apache.shardingsphere.core.parse.sql.segment.SQLSegment;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* SQL statement abstract class.
......@@ -56,24 +52,10 @@ public abstract class AbstractSQLStatement implements SQLStatement {
private final ParseCondition encryptCondition = new ParseCondition();
@Getter(AccessLevel.NONE)
private final List<SQLToken> sqlTokens = new LinkedList<>();
private int parametersIndex;
private String logicSQL;
@Override
public final void addSQLToken(final SQLToken sqlToken) {
sqlTokens.add(sqlToken);
}
@Override
public final List<SQLToken> getSQLTokens() {
Collections.sort(sqlTokens);
return sqlTokens;
}
@Override
@SuppressWarnings("unchecked")
public final <T extends SQLSegment> Optional<T> findSQLSegment(final Class<T> sqlSegmentType) {
......
......@@ -22,10 +22,8 @@ import org.apache.shardingsphere.core.constant.SQLType;
import org.apache.shardingsphere.core.parse.sql.context.condition.ParseCondition;
import org.apache.shardingsphere.core.parse.sql.context.table.Tables;
import org.apache.shardingsphere.core.parse.sql.segment.SQLSegment;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import java.util.Collection;
import java.util.List;
/**
* SQL statement.
......@@ -69,20 +67,6 @@ public interface SQLStatement {
*/
ParseCondition getEncryptCondition();
/**
* Add SQL token.
*
* @param sqlToken SQL token
*/
void addSQLToken(SQLToken sqlToken);
/**
* Get SQL tokens.
*
* @return SQL tokens
*/
List<SQLToken> getSQLTokens();
/**
* Get index of parameters.
*
......
......@@ -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;
......
......@@ -19,7 +19,6 @@ package org.apache.shardingsphere.core.rewrite;
import com.google.common.base.Optional;
import org.apache.shardingsphere.core.parse.sql.statement.SQLStatement;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.builder.SQLBuilder;
import org.apache.shardingsphere.core.rewrite.rewriter.parameter.ParameterRewriter;
......@@ -29,6 +28,7 @@ import org.apache.shardingsphere.core.rewrite.token.BaseTokenGenerateEngine;
import org.apache.shardingsphere.core.rewrite.token.EncryptTokenGenerateEngine;
import org.apache.shardingsphere.core.rewrite.token.MasterSlaveTokenGenerateEngine;
import org.apache.shardingsphere.core.rewrite.token.ShardingTokenGenerateEngine;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.route.SQLUnit;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import org.apache.shardingsphere.core.route.type.TableUnit;
......@@ -92,7 +92,7 @@ public final class SQLRewriteEngine {
}
private List<SQLToken> createSQLTokens(final BaseRule baseRule, final SQLStatement sqlStatement, final boolean isSingleRoute) {
List<SQLToken> result = new LinkedList<>(sqlStatement.getSQLTokens());
List<SQLToken> result = new LinkedList<>();
result.addAll(new BaseTokenGenerateEngine().generateSQLTokens(sqlStatement, baseRule, isSingleRoute));
if (baseRule instanceof ShardingRule) {
ShardingRule shardingRule = (ShardingRule) baseRule;
......
......@@ -19,15 +19,16 @@ package org.apache.shardingsphere.core.rewrite.rewriter.sql;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.core.parse.sql.statement.SQLStatement;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.builder.SQLBuilder;
import org.apache.shardingsphere.core.rewrite.placeholder.InsertColumnsPlaceholder;
import org.apache.shardingsphere.core.rewrite.token.pojo.InsertColumnsToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.Substitutable;
import java.util.List;
/**
* Base SQL rewriter.
*
......
......@@ -29,7 +29,6 @@ import org.apache.shardingsphere.core.parse.sql.segment.dml.expr.simple.Paramete
import org.apache.shardingsphere.core.parse.sql.segment.dml.predicate.PredicateSegment;
import org.apache.shardingsphere.core.parse.sql.statement.SQLStatement;
import org.apache.shardingsphere.core.parse.sql.statement.dml.UpdateStatement;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.builder.SQLBuilder;
import org.apache.shardingsphere.core.rewrite.placeholder.InsertAssistedColumnsPlaceholder;
......@@ -46,6 +45,7 @@ import org.apache.shardingsphere.core.rewrite.token.pojo.InsertAssistedColumnsTo
import org.apache.shardingsphere.core.rewrite.token.pojo.InsertSetAddAssistedColumnsToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.InsertSetEncryptValueToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.InsertValuesToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.rule.ColumnNode;
import org.apache.shardingsphere.core.strategy.encrypt.ShardingEncryptorEngine;
import org.apache.shardingsphere.spi.encrypt.ShardingEncryptor;
......
......@@ -17,7 +17,7 @@
package org.apache.shardingsphere.core.rewrite.rewriter.sql;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.builder.SQLBuilder;
......
......@@ -25,7 +25,6 @@ import org.apache.shardingsphere.core.optimize.result.insert.InsertOptimizeResul
import org.apache.shardingsphere.core.parse.sql.segment.dml.order.item.OrderByItemSegment;
import org.apache.shardingsphere.core.parse.sql.segment.dml.order.item.TextOrderByItemSegment;
import org.apache.shardingsphere.core.parse.sql.statement.dml.SelectStatement;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.builder.ParameterBuilder;
import org.apache.shardingsphere.core.rewrite.builder.SQLBuilder;
import org.apache.shardingsphere.core.rewrite.placeholder.AggregationDistinctPlaceholder;
......@@ -45,6 +44,7 @@ import org.apache.shardingsphere.core.rewrite.token.pojo.InsertSetAddGeneratedKe
import org.apache.shardingsphere.core.rewrite.token.pojo.OffsetToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.OrderByToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.RowCountToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SelectItemPrefixToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SelectItemsToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.TableToken;
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.core.rewrite.token;
import com.google.common.base.Optional;
import org.apache.shardingsphere.core.parse.sql.statement.SQLStatement;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.rewrite.token.generator.CollectionSQLTokenGenerator;
import org.apache.shardingsphere.core.rewrite.token.generator.IgnoreForSingleRoute;
import org.apache.shardingsphere.core.rewrite.token.generator.OptionalSQLTokenGenerator;
......
......@@ -18,7 +18,7 @@
package org.apache.shardingsphere.core.rewrite.token.generator;
import org.apache.shardingsphere.core.parse.sql.statement.SQLStatement;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.rule.BaseRule;
import java.util.Collection;
......
......@@ -19,7 +19,7 @@ package org.apache.shardingsphere.core.rewrite.token.generator;
import com.google.common.base.Optional;
import org.apache.shardingsphere.core.parse.sql.statement.SQLStatement;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.rewrite.token.pojo.SQLToken;
import org.apache.shardingsphere.core.rule.BaseRule;
/**
......
......@@ -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();
......
......@@ -19,7 +19,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import com.google.common.base.Optional;
import lombok.Getter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Aggregation distinct token.
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.sql.context.condition.Column;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Encrypt column token.
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.constant.QuoteCharacter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Index token.
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import java.util.Collection;
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import java.util.Collection;
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Insert generated key columns token.
......
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import java.util.Collection;
......
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Insert set add generated key token.
......
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Insert set encrypt value token.
......
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Insert values token.
......
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Offset token for limit.
......
......@@ -17,8 +17,6 @@
package org.apache.shardingsphere.core.rewrite.token.pojo;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Order by token.
*
......
......@@ -19,7 +19,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Remove token.
......
......@@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Row count token for limit.
......
......@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.shardingsphere.core.parse.sql.token;
package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
......
......@@ -19,7 +19,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
/**
* Select item prefix token.
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import java.util.Collection;
......
......@@ -20,7 +20,6 @@ package org.apache.shardingsphere.core.rewrite.token.pojo;
import lombok.Getter;
import lombok.ToString;
import org.apache.shardingsphere.core.parse.constant.QuoteCharacter;
import org.apache.shardingsphere.core.parse.sql.token.SQLToken;
import org.apache.shardingsphere.core.parse.util.SQLUtil;
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册