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

Code style for parser (#4246)

* refactor InsertColumnsSegment's constructor

* inline unnecessary local variable for MySQLTCLVisitor

* inline unnecessary local variable for MySQLDALVisitor

* code style for MySQLDMLVisitor

* code style for MySQLDDLVisitor

* use getter instead of access properties directly
上级 29a7fbf9
......@@ -33,7 +33,6 @@ import org.apache.shardingsphere.sql.parser.sql.statement.dml.InsertStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.generic.WhereSegmentAvailable;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
/**
......@@ -53,12 +52,14 @@ public final class PreparedJudgementEngine implements ShadowJudgementEngine {
@Override
public boolean isShadowSQL() {
if (sqlStatementContext.getSqlStatement() instanceof InsertStatement) {
LinkedList<ColumnSegment> columnSegments = (LinkedList<ColumnSegment>) ((InsertStatement) sqlStatementContext.getSqlStatement()).getColumns();
for (int i = 0; i < columnSegments.size(); i++) {
if (columnSegments.get(i).getIdentifier().getValue().equals(shadowRule.getColumn())) {
final Object value = parameters.get(i);
Collection<ColumnSegment> columnSegments = ((InsertStatement) sqlStatementContext.getSqlStatement()).getColumns();
int count = 0;
for (ColumnSegment each : columnSegments) {
if (each.getIdentifier().getValue().equals(shadowRule.getColumn())) {
Object value = parameters.get(count);
return value instanceof Boolean && (Boolean) value;
}
count++;
}
return false;
}
......
......@@ -33,18 +33,17 @@ import java.util.Arrays;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class PreparedJudgementEngineTest {
public final class PreparedJudgementEngineTest {
@Test
public void isShadowSql() {
public void isShadowSQL() {
RelationMetas relationMetas = mock(RelationMetas.class);
when(relationMetas.getAllColumnNames("tbl")).thenReturn(Arrays.asList("id", "name", "shadow"));
ShadowRuleConfiguration shadowRuleConfiguration = new ShadowRuleConfiguration();
shadowRuleConfiguration.setColumn("shadow");
ShadowRule shadowRule = new ShadowRule(shadowRuleConfiguration);
InsertStatement insertStatement = new InsertStatement();
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0);
insertColumnsSegment.getColumns().addAll(
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0,
Arrays.asList(new ColumnSegment(0, 0, new IdentifierValue("id")), new ColumnSegment(0, 0, new IdentifierValue("name")), new ColumnSegment(0, 0, new IdentifierValue("shadow"))));
insertStatement.setColumns(insertColumnsSegment);
InsertSQLStatementContext insertSQLStatementContext = new InsertSQLStatementContext(relationMetas, Arrays.<Object>asList(1, "Tom", 2, "Jerry", 3, true), insertStatement);
......
......@@ -65,8 +65,7 @@ public final class SimpleJudgementEngineTest {
@Test
public void judgeForInsert() {
InsertStatement insertStatement = new InsertStatement();
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0);
insertColumnsSegment.getColumns().addAll(
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0,
Arrays.asList(new ColumnSegment(0, 0, new IdentifierValue("id")), new ColumnSegment(0, 0, new IdentifierValue("name")), new ColumnSegment(0, 0, new IdentifierValue("shadow"))));
insertStatement.setColumns(insertColumnsSegment);
insertStatement.getValues()
......
......@@ -69,8 +69,7 @@ public final class ShardingResultMergerEngineTest {
public void assertNewInstanceWithOtherStatement() {
InsertStatement insertStatement = new InsertStatement();
insertStatement.getAllSQLSegments().add(new TableSegment(0, 0, new IdentifierValue("tbl")));
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0);
insertColumnsSegment.getColumns().add(new ColumnSegment(0, 0, new IdentifierValue("col")));
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("col"))));
insertStatement.setColumns(insertColumnsSegment);
SQLStatementContext sqlStatementContext = new InsertSQLStatementContext(null, Collections.emptyList(), insertStatement);
ShardingSphereProperties properties = new ShardingSphereProperties(new Properties());
......
......@@ -58,9 +58,7 @@ public final class GeneratedKeyTest {
@Before
public void setUp() {
insertStatement.setTable(new TableSegment(0, 0, new IdentifierValue("tbl")));
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0);
insertColumnsSegment.getColumns().add(new ColumnSegment(0, 0, new IdentifierValue("id")));
insertStatement.setColumns(insertColumnsSegment);
insertStatement.setColumns(new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("id")))));
}
@Test
......
......@@ -45,8 +45,8 @@ public final class InsertColumnsExtractor implements OptionalSQLSegmentExtractor
if (!insertValuesClause.isPresent()) {
return Optional.absent();
}
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(insertValuesClause.get().getStart().getStartIndex(), extractStopIndex(insertValuesClause.get()));
insertColumnsSegment.getColumns().addAll(extractColumns(insertValuesClause.get(), parameterMarkerIndexes));
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(
insertValuesClause.get().getStart().getStartIndex(), extractStopIndex(insertValuesClause.get()), extractColumns(insertValuesClause.get(), parameterMarkerIndexes));
return Optional.of(insertColumnsSegment);
}
......
......@@ -22,7 +22,6 @@ import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.sql.parser.sql.segment.SQLSegment;
import java.util.Collection;
import java.util.LinkedList;
/**
* Insert columns segment.
......@@ -38,5 +37,5 @@ public final class InsertColumnsSegment implements SQLSegment {
private final int stopIndex;
private final Collection<ColumnSegment> columns = new LinkedList<>();
private final Collection<ColumnSegment> columns;
}
......@@ -44,8 +44,7 @@ public final class InsertStatementTest {
@Test
public void assertNotUseDefaultColumnsWithColumns() {
InsertStatement insertStatement = new InsertStatement();
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0);
insertColumnsSegment.getColumns().add(new ColumnSegment(0, 0, new IdentifierValue("col")));
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("col"))));
insertStatement.setColumns(insertColumnsSegment);
assertFalse(insertStatement.useDefaultColumns());
}
......@@ -54,15 +53,14 @@ public final class InsertStatementTest {
public void assertNotUseDefaultColumnsWithSetAssignment() {
InsertStatement insertStatement = new InsertStatement();
insertStatement.setSetAssignment(new SetAssignmentSegment(0, 0, Collections.<AssignmentSegment>emptyList()));
insertStatement.setColumns(new InsertColumnsSegment(0, 0));
insertStatement.setColumns(new InsertColumnsSegment(0, 0, Collections.<ColumnSegment>emptyList()));
assertFalse(insertStatement.useDefaultColumns());
}
@Test
public void assertGetColumnNamesForInsertColumns() {
InsertStatement insertStatement = new InsertStatement();
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0);
insertColumnsSegment.getColumns().add(new ColumnSegment(0, 0, new IdentifierValue("col")));
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0, Collections.singletonList(new ColumnSegment(0, 0, new IdentifierValue("col"))));
insertStatement.setColumns(insertColumnsSegment);
assertThat(insertStatement.getColumnNames().size(), is(1));
assertThat(insertStatement.getColumnNames().iterator().next(), is("col"));
......
......@@ -200,8 +200,7 @@ public abstract class MySQLVisitor extends MySQLStatementBaseVisitor<ASTNode> {
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
IdentifierValue tableIdentifier = (IdentifierValue) visit(ctx.name());
TableSegment result = new TableSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), tableIdentifier);
TableSegment result = new TableSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.name()));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new SchemaSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
......@@ -235,18 +234,11 @@ public abstract class MySQLVisitor extends MySQLStatementBaseVisitor<ASTNode> {
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
Collection<ColumnSegment> segments = new LinkedList<>();
Collection<ColumnSegment> columnSegments = new LinkedList<>();
for (ColumnNameContext each : ctx.columnName()) {
segments.add((ColumnSegment) visit(each));
columnSegments.add((ColumnSegment) visit(each));
}
InsertColumnsSegment result = new InsertColumnsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getColumns().addAll(segments);
return result;
}
@Override
public final ASTNode visitDataTypeName(final DataTypeNameContext ctx) {
return visit(ctx.identifier(0));
return new InsertColumnsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments);
}
@Override
......@@ -519,6 +511,11 @@ public abstract class MySQLVisitor extends MySQLStatementBaseVisitor<ASTNode> {
return new ExpressionProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
}
@Override
public final ASTNode visitDataTypeName(final DataTypeNameContext ctx) {
return visit(ctx.identifier(0));
}
// TODO :FIXME, sql case id: insert_with_str_to_date
private void calculateParameterCount(final Collection<ExprContext> exprContexts) {
for (ExprContext each : exprContexts) {
......
......@@ -18,21 +18,21 @@
package org.apache.shardingsphere.sql.parser.visitor;
import org.apache.shardingsphere.sql.parser.MySQLVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.VariableExprContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SetVariableContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowOtherContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.DescContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.FromSchemaContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.FromTableContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SchemaNameContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.SetVariableContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowColumnsContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowCreateTableContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowDatabasesContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowIndexContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowLikeContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowOtherContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowTableStatusContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.ShowTablesContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.UseContext;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.VariableExprContext;
import org.apache.shardingsphere.sql.parser.sql.ASTNode;
import org.apache.shardingsphere.sql.parser.sql.segment.dal.FromSchemaSegment;
import org.apache.shardingsphere.sql.parser.sql.segment.dal.FromTableSegment;
......@@ -40,21 +40,19 @@ import org.apache.shardingsphere.sql.parser.sql.segment.dal.ShowLikeSegment;
import org.apache.shardingsphere.sql.parser.sql.segment.dal.VariableExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.segment.generic.SchemaSegment;
import org.apache.shardingsphere.sql.parser.sql.segment.generic.TableSegment;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.SetStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.DescribeStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.SetStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowColumnsStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowCreateTableStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowDatabasesStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowOtherStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowTableStatusStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowTablesStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.UseStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowOtherStatement;
import org.apache.shardingsphere.sql.parser.sql.value.identifier.IdentifierValue;
import org.apache.shardingsphere.sql.parser.sql.value.literal.impl.StringLiteralValue;
import java.util.List;
/**
* MySQL DAL visitor.
*
......@@ -71,9 +69,8 @@ public final class MySQLDALVisitor extends MySQLVisitor {
@Override
public ASTNode visitDesc(final DescContext ctx) {
TableSegment table = (TableSegment) visit(ctx.tableName());
DescribeStatement result = new DescribeStatement();
result.setTable(table);
result.setTable((TableSegment) visit(ctx.tableName()));
return result;
}
......@@ -91,13 +88,11 @@ public final class MySQLDALVisitor extends MySQLVisitor {
@Override
public ASTNode visitShowTables(final ShowTablesContext ctx) {
ShowTablesStatement result = new ShowTablesStatement();
FromSchemaContext fromSchemaContext = ctx.fromSchema();
ShowLikeContext showLikeContext = ctx.showLike();
if (null != fromSchemaContext) {
if (null != ctx.fromSchema()) {
FromSchemaSegment fromSchemaSegment = (FromSchemaSegment) visit(ctx.fromSchema());
result.getAllSQLSegments().add(fromSchemaSegment);
}
if (null != showLikeContext) {
if (null != ctx.showLike()) {
ShowLikeSegment showLikeSegment = (ShowLikeSegment) visit(ctx.showLike());
result.getAllSQLSegments().add(showLikeSegment);
}
......@@ -107,13 +102,11 @@ public final class MySQLDALVisitor extends MySQLVisitor {
@Override
public ASTNode visitShowTableStatus(final ShowTableStatusContext ctx) {
ShowTableStatusStatement result = new ShowTableStatusStatement();
FromSchemaContext fromSchemaContext = ctx.fromSchema();
ShowLikeContext showLikeContext = ctx.showLike();
if (null != fromSchemaContext) {
if (null != ctx.fromSchema()) {
FromSchemaSegment fromSchemaSegment = (FromSchemaSegment) visit(ctx.fromSchema());
result.getAllSQLSegments().add(fromSchemaSegment);
}
if (null != showLikeContext) {
if (null != ctx.showLike()) {
ShowLikeSegment showLikeSegment = (ShowLikeSegment) visit(ctx.showLike());
result.getAllSQLSegments().add(showLikeSegment);
}
......@@ -123,15 +116,13 @@ public final class MySQLDALVisitor extends MySQLVisitor {
@Override
public ASTNode visitShowColumns(final ShowColumnsContext ctx) {
ShowColumnsStatement result = new ShowColumnsStatement();
FromTableContext fromTableContext = ctx.fromTable();
FromSchemaContext fromSchemaContext = ctx.fromSchema();
if (null != fromTableContext) {
FromTableSegment fromTableSegment = (FromTableSegment) visit(fromTableContext);
if (null != ctx.fromTable()) {
FromTableSegment fromTableSegment = (FromTableSegment) visit(ctx.fromTable());
result.setTable(fromTableSegment.getTable());
result.getAllSQLSegments().add(fromTableSegment.getTable());
result.getAllSQLSegments().add(fromTableSegment);
}
if (null != fromSchemaContext) {
if (null != ctx.fromSchema()) {
FromSchemaSegment fromSchemaSegment = (FromSchemaSegment) visit(ctx.fromSchema());
result.getAllSQLSegments().add(fromSchemaSegment);
}
......@@ -141,15 +132,13 @@ public final class MySQLDALVisitor extends MySQLVisitor {
@Override
public ASTNode visitShowIndex(final ShowIndexContext ctx) {
ShowIndexStatement result = new ShowIndexStatement();
FromSchemaContext fromSchemaContext = ctx.fromSchema();
FromTableContext fromTableContext = ctx.fromTable();
if (null != fromSchemaContext) {
SchemaNameContext schemaNameContext = fromSchemaContext.schemaName();
SchemaSegment schemaSegment = new SchemaSegment(schemaNameContext.start.getStartIndex(), schemaNameContext.stop.getStopIndex(), (IdentifierValue) visit(schemaNameContext));
if (null != ctx.fromSchema()) {
SchemaNameContext schemaNameContext = ctx.fromSchema().schemaName();
SchemaSegment schemaSegment = new SchemaSegment(schemaNameContext.getStart().getStartIndex(), schemaNameContext.getStop().getStopIndex(), (IdentifierValue) visit(schemaNameContext));
result.getAllSQLSegments().add(schemaSegment);
}
if (null != fromTableContext) {
FromTableSegment fromTableSegment = (FromTableSegment) visitFromTable(fromTableContext);
if (null != ctx.fromTable()) {
FromTableSegment fromTableSegment = (FromTableSegment) visitFromTable(ctx.fromTable());
TableSegment tableSegment = fromTableSegment.getTable();
result.setTable(tableSegment);
result.getAllSQLSegments().add(tableSegment);
......@@ -161,16 +150,14 @@ public final class MySQLDALVisitor extends MySQLVisitor {
@Override
public ASTNode visitShowCreateTable(final ShowCreateTableContext ctx) {
ShowCreateTableStatement result = new ShowCreateTableStatement();
TableSegment table = (TableSegment) visit(ctx.tableName());
result.setTable(table);
result.setTable((TableSegment) visit(ctx.tableName()));
return result;
}
@Override
public ASTNode visitFromTable(final FromTableContext ctx) {
FromTableSegment result = new FromTableSegment();
TableSegment tableSegment = (TableSegment) visit(ctx.tableName());
result.setTable(tableSegment);
result.setTable((TableSegment) visit(ctx.tableName()));
return result;
}
......@@ -181,12 +168,11 @@ public final class MySQLDALVisitor extends MySQLVisitor {
@Override
public ASTNode visitSetVariable(final SetVariableContext ctx) {
List<VariableExprContext> variableExpressions = ctx.variableExpr();
SetStatement result = new SetStatement();
for (VariableExprContext each: variableExpressions) {
for (VariableExprContext each: ctx.variableExpr()) {
String variable = each.variable_().getText();
String expr = each.expr().getText();
VariableExpressionSegment variableExpressionSegment = new VariableExpressionSegment(each.start.getStartIndex(), each.stop.getStopIndex(), variable, expr);
String expression = each.expr().getText();
VariableExpressionSegment variableExpressionSegment = new VariableExpressionSegment(each.getStart().getStartIndex(), each.getStop().getStopIndex(), variable, expression);
result.getAllSQLSegments().add(variableExpressionSegment);
}
return result;
......
......@@ -87,15 +87,13 @@ public final class MySQLDDLVisitor extends MySQLVisitor {
TableSegment table = (TableSegment) visit(ctx.tableName());
result.setTable(table);
result.getAllSQLSegments().add(table);
CreateDefinitionClauseContext createDefinitionClause = ctx.createDefinitionClause();
if (null != createDefinitionClause) {
CreateTableStatement createDefinition = (CreateTableStatement) visit(createDefinitionClause);
if (null != ctx.createDefinitionClause()) {
CreateTableStatement createDefinition = (CreateTableStatement) visit(ctx.createDefinitionClause());
result.getColumnDefinitions().addAll(createDefinition.getColumnDefinitions());
result.getAllSQLSegments().addAll(createDefinition.getAllSQLSegments());
}
CreateLikeClauseContext createLikeClause = ctx.createLikeClause();
if (null != createLikeClause) {
result.getAllSQLSegments().add((TableSegment) visit(createLikeClause));
if (null != ctx.createLikeClause()) {
result.getAllSQLSegments().add((TableSegment) visit(ctx.createLikeClause()));
}
return result;
}
......@@ -106,9 +104,8 @@ public final class MySQLDDLVisitor extends MySQLVisitor {
TableSegment table = (TableSegment) visit(ctx.tableName());
result.setTable(table);
result.getAllSQLSegments().add(table);
AlterDefinitionClauseContext alterDefinitionClause = ctx.alterDefinitionClause();
if (null != alterDefinitionClause) {
AlterTableStatement alterDefinition = (AlterTableStatement) visit(alterDefinitionClause);
if (null != ctx.alterDefinitionClause()) {
AlterTableStatement alterDefinition = (AlterTableStatement) visit(ctx.alterDefinitionClause());
result.getAddedColumnDefinitions().addAll(alterDefinition.getAddedColumnDefinitions());
result.getChangedPositionColumns().addAll(alterDefinition.getChangedPositionColumns());
result.getDroppedColumnNames().addAll(alterDefinition.getDroppedColumnNames());
......@@ -155,8 +152,6 @@ public final class MySQLDDLVisitor extends MySQLVisitor {
@Override
public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
IdentifierValue dataType = (IdentifierValue) visit(ctx.dataType().dataTypeName());
Collection<InlineDataTypeContext> inlineDataTypes = Collections2.filter(ctx.inlineDataType(), new Predicate<InlineDataTypeContext>() {
@Override
......@@ -167,13 +162,13 @@ public final class MySQLDDLVisitor extends MySQLVisitor {
Collection<GeneratedDataTypeContext> generatedDataTypes = Collections2.filter(ctx.generatedDataType(), new Predicate<GeneratedDataTypeContext>() {
@Override
public boolean apply(final GeneratedDataTypeContext generatedDataType) {
return null != generatedDataType.commonDataTypeOption()
&& null != generatedDataType.commonDataTypeOption().primaryKey();
return null != generatedDataType.commonDataTypeOption() && null != generatedDataType.commonDataTypeOption().primaryKey();
}
});
ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
boolean isPrimaryKey = inlineDataTypes.size() > 0 || generatedDataTypes.size() > 0;
return new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
column.getIdentifier().getValue(), dataType.getValue(), isPrimaryKey);
IdentifierValue dataType = (IdentifierValue) visit(ctx.dataType().dataTypeName());
return new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column.getIdentifier().getValue(), dataType.getValue(), isPrimaryKey);
}
@Override
......
......@@ -98,7 +98,7 @@ import java.util.List;
* @author panjuan
*/
public final class MySQLDMLVisitor extends MySQLVisitor {
@Override
public ASTNode visitInsert(final InsertContext ctx) {
// TODO :FIXME, since there is no segment for insertValuesClause, InsertStatement is created by sub rule.
......@@ -177,7 +177,7 @@ public final class MySQLDMLVisitor extends MySQLVisitor {
for (AssignmentContext each : ctx.assignment()) {
assignments.add((AssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), assignments);
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), assignments);
}
@Override
......@@ -186,14 +186,14 @@ public final class MySQLDMLVisitor extends MySQLVisitor {
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), segments);
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visitColumnName(ctx.columnName());
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
return new AssignmentSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), column, value);
return new AssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), column, value);
}
@Override
......@@ -202,7 +202,7 @@ public final class MySQLDMLVisitor extends MySQLVisitor {
if (null != expr) {
return visit(expr);
}
return new CommonExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText());
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), ctx.getText());
}
@Override
......@@ -337,7 +337,7 @@ public final class MySQLDMLVisitor extends MySQLVisitor {
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex());
result.getProjections().addAll(projections);
return result;
}
......@@ -437,7 +437,7 @@ public final class MySQLDMLVisitor extends MySQLVisitor {
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) {
WhereSegment result = new WhereSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
WhereSegment result = new WhereSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex());
result.setParameterMarkerStartIndex(getCurrentParameterIndex());
ASTNode segment = visit(ctx.expr());
if (segment instanceof OrPredicateSegment) {
......@@ -454,7 +454,7 @@ public final class MySQLDMLVisitor extends MySQLVisitor {
@Override
public ASTNode visitLimitClause(final LimitClauseContext ctx) {
if (null == ctx.limitOffset()) {
return new LimitSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, (PaginationValueSegment) visit(ctx.limitRowCount()));
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), null, (PaginationValueSegment) visit(ctx.limitRowCount()));
}
PaginationValueSegment rowCount;
PaginationValueSegment limitOffset;
......@@ -465,22 +465,22 @@ public final class MySQLDMLVisitor extends MySQLVisitor {
limitOffset = (PaginationValueSegment) visit(ctx.limitOffset());
rowCount = (PaginationValueSegment) visit(ctx.limitRowCount());
}
return new LimitSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), limitOffset, rowCount);
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), limitOffset, rowCount);
}
@Override
public ASTNode visitLimitRowCount(final LimitRowCountContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
return new ParameterMarkerLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), ((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
}
@Override
public ASTNode visitLimitOffset(final LimitOffsetContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
return new ParameterMarkerLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStartIndex(), ((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
}
}
......@@ -49,19 +49,16 @@ public final class MySQLTCLVisitor extends MySQLVisitor {
@Override
public ASTNode visitSetAutoCommit(final SetAutoCommitContext ctx) {
SetAutoCommitStatement result = new SetAutoCommitStatement();
AutoCommitValueContext autoCommitValueContext = ctx.autoCommitValue();
if (null != autoCommitValueContext) {
AutoCommitSegment autoCommitSegment = (AutoCommitSegment) visit(ctx.autoCommitValue());
result.getAllSQLSegments().add(autoCommitSegment);
result.setAutoCommit(autoCommitSegment.isAutoCommit());
}
AutoCommitSegment autoCommitSegment = (AutoCommitSegment) visit(ctx.autoCommitValue());
result.getAllSQLSegments().add(autoCommitSegment);
result.setAutoCommit(autoCommitSegment.isAutoCommit());
return result;
}
@Override
public ASTNode visitAutoCommitValue(final AutoCommitValueContext ctx) {
boolean autoCommit = "1".equals(ctx.getText()) || "ON".equals(ctx.getText());
return new AutoCommitSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), autoCommit);
return new AutoCommitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), autoCommit);
}
@Override
......
......@@ -42,8 +42,7 @@ public final class InsertSQLStatementContextTest {
public void assertInsertSQLStatementContextWithColumnNames() {
InsertStatement insertStatement = new InsertStatement();
insertStatement.getAllSQLSegments().add(new TableSegment(0, 0, new IdentifierValue("tbl")));
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0);
insertColumnsSegment.getColumns().addAll(Arrays.asList(
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(0, 0, Arrays.asList(
new ColumnSegment(0, 0, new IdentifierValue("id")), new ColumnSegment(0, 0, new IdentifierValue("name")), new ColumnSegment(0, 0, new IdentifierValue("status"))));
insertStatement.setColumns(insertColumnsSegment);
setUpInsertValues(insertStatement);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册