From fac4662b949a48e66342289f6b01a7ef86d15d03 Mon Sep 17 00:00:00 2001 From: Liang Zhang Date: Tue, 11 Feb 2020 22:05:39 +0800 Subject: [PATCH] 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 --- .../impl/PreparedJudgementEngine.java | 11 ++-- .../impl/PreparedJudgementEngineTest.java | 7 +-- .../impl/SimpleJudgementEngineTest.java | 3 +- .../merge/ShardingResultMergerEngineTest.java | 3 +- .../route/engine/keygen/GeneratedKeyTest.java | 4 +- .../dml/insert/InsertColumnsExtractor.java | 4 +- .../dml/column/InsertColumnsSegment.java | 3 +- .../statement/dml/InsertStatementTest.java | 8 +-- .../sql/parser/MySQLVisitor.java | 21 +++---- .../sql/parser/visitor/MySQLDALVisitor.java | 60 +++++++------------ .../sql/parser/visitor/MySQLDDLVisitor.java | 25 ++++---- .../sql/parser/visitor/MySQLDMLVisitor.java | 26 ++++---- .../sql/parser/visitor/MySQLTCLVisitor.java | 11 ++-- .../impl/InsertSQLStatementContextTest.java | 3 +- 14 files changed, 78 insertions(+), 111 deletions(-) diff --git a/shadow-core/shadow-core-rewrite/src/main/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngine.java b/shadow-core/shadow-core-rewrite/src/main/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngine.java index b6033181fe..793bda7e06 100644 --- a/shadow-core/shadow-core-rewrite/src/main/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngine.java +++ b/shadow-core/shadow-core-rewrite/src/main/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngine.java @@ -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 columnSegments = (LinkedList) ((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 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; } diff --git a/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngineTest.java b/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngineTest.java index 106b21bf4c..0d11b920b3 100644 --- a/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngineTest.java +++ b/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/PreparedJudgementEngineTest.java @@ -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.asList(1, "Tom", 2, "Jerry", 3, true), insertStatement); diff --git a/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/SimpleJudgementEngineTest.java b/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/SimpleJudgementEngineTest.java index a1a9e2c8ed..1dff860fbf 100644 --- a/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/SimpleJudgementEngineTest.java +++ b/shadow-core/shadow-core-rewrite/src/test/java/org/apache/shardingsphere/shadow/rewrite/judgement/impl/SimpleJudgementEngineTest.java @@ -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() diff --git a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java index 53fa5f8c6d..59806d8a72 100644 --- a/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java +++ b/sharding-core/sharding-core-merge/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java @@ -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()); diff --git a/sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/keygen/GeneratedKeyTest.java b/sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/keygen/GeneratedKeyTest.java index 8a182c2927..abaeda7968 100644 --- a/sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/keygen/GeneratedKeyTest.java +++ b/sharding-core/sharding-core-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/keygen/GeneratedKeyTest.java @@ -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 diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/extractor/impl/dml/insert/InsertColumnsExtractor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/extractor/impl/dml/insert/InsertColumnsExtractor.java index 1752857563..c4cb4edcc9 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/extractor/impl/dml/insert/InsertColumnsExtractor.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/extractor/impl/dml/insert/InsertColumnsExtractor.java @@ -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); } diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/sql/segment/dml/column/InsertColumnsSegment.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/sql/segment/dml/column/InsertColumnsSegment.java index 3f400388e3..2f17d1630a 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/sql/segment/dml/column/InsertColumnsSegment.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/sql/segment/dml/column/InsertColumnsSegment.java @@ -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 columns = new LinkedList<>(); + private final Collection columns; } diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/sql/statement/dml/InsertStatementTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/sql/statement/dml/InsertStatementTest.java index b7c7b8767b..94bcfb6e64 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/sql/statement/dml/InsertStatementTest.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/sql/statement/dml/InsertStatementTest.java @@ -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.emptyList())); - insertStatement.setColumns(new InsertColumnsSegment(0, 0)); + insertStatement.setColumns(new InsertColumnsSegment(0, 0, Collections.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")); diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/MySQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/MySQLVisitor.java index a7d200e723..0796cc771e 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/MySQLVisitor.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/MySQLVisitor.java @@ -200,8 +200,7 @@ public abstract class MySQLVisitor extends MySQLStatementBaseVisitor { @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 { @Override public final ASTNode visitColumnNames(final ColumnNamesContext ctx) { - Collection segments = new LinkedList<>(); + Collection 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 { 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 exprContexts) { for (ExprContext each : exprContexts) { diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDALVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDALVisitor.java index bd6f2442b8..a476a6d576 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDALVisitor.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDALVisitor.java @@ -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 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; diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDDLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDDLVisitor.java index 4a2bd3ba24..96ce52489c 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDDLVisitor.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDDLVisitor.java @@ -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 inlineDataTypes = Collections2.filter(ctx.inlineDataType(), new Predicate() { @Override @@ -167,13 +162,13 @@ public final class MySQLDDLVisitor extends MySQLVisitor { Collection generatedDataTypes = Collections2.filter(ctx.generatedDataType(), new Predicate() { @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 diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDMLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDMLVisitor.java index 0b10d917c7..15829f8f65 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDMLVisitor.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLDMLVisitor.java @@ -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()); } } diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLTCLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLTCLVisitor.java index 1c11a4a594..96c274e2b9 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLTCLVisitor.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/visitor/MySQLTCLVisitor.java @@ -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 diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-relation/src/test/java/org/apache/shardingsphere/sql/parser/relation/statement/impl/InsertSQLStatementContextTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-relation/src/test/java/org/apache/shardingsphere/sql/parser/relation/statement/impl/InsertSQLStatementContextTest.java index 1f92098215..6d6d1dbc3c 100644 --- a/shardingsphere-sql-parser/shardingsphere-sql-parser-relation/src/test/java/org/apache/shardingsphere/sql/parser/relation/statement/impl/InsertSQLStatementContextTest.java +++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-relation/src/test/java/org/apache/shardingsphere/sql/parser/relation/statement/impl/InsertSQLStatementContextTest.java @@ -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); -- GitLab