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

decouple find SchemaSegment with show index statement (#4354)

上级 f0a94655
......@@ -17,8 +17,10 @@
package org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql;
import com.google.common.base.Optional;
import lombok.Getter;
import lombok.Setter;
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.DALStatement;
import org.apache.shardingsphere.sql.parser.sql.statement.generic.TableSegmentAvailable;
......@@ -31,4 +33,15 @@ import org.apache.shardingsphere.sql.parser.sql.statement.generic.TableSegmentAv
public final class ShowIndexStatement extends DALStatement implements TableSegmentAvailable {
private TableSegment table;
private SchemaSegment schema;
/**
* Get schema.
*
* @return schema
*/
public Optional<SchemaSegment> getSchema() {
return Optional.fromNullable(schema);
}
}
......@@ -134,6 +134,7 @@ public final class MySQLDALVisitor extends MySQLVisitor {
SchemaNameContext schemaNameContext = ctx.fromSchema().schemaName();
SchemaSegment schemaSegment = new SchemaSegment(schemaNameContext.getStart().getStartIndex(), schemaNameContext.getStop().getStopIndex(), (IdentifierValue) visit(schemaNameContext));
result.getAllSQLSegments().add(schemaSegment);
result.setSchema(schemaSegment);
}
if (null != ctx.fromTable()) {
FromTableSegment fromTableSegment = (FromTableSegment) visitFromTable(ctx.fromTable());
......
......@@ -23,7 +23,6 @@ import org.apache.shardingsphere.sql.parser.integrate.asserts.SQLCaseAssertConte
import org.apache.shardingsphere.sql.parser.integrate.asserts.segment.schema.SchemaAssert;
import org.apache.shardingsphere.sql.parser.integrate.asserts.segment.table.TableAssert;
import org.apache.shardingsphere.sql.parser.integrate.jaxb.domain.statement.dal.ShowIndexStatementTestCase;
import org.apache.shardingsphere.sql.parser.sql.segment.generic.SchemaSegment;
import org.apache.shardingsphere.sql.parser.sql.statement.dal.dialect.mysql.ShowIndexStatement;
import static org.junit.Assert.assertFalse;
......@@ -58,10 +57,10 @@ public final class ShowIndexStatementAssert {
private static void assertSchema(final SQLCaseAssertContext assertContext, final ShowIndexStatement actual, final ShowIndexStatementTestCase expected) {
if (null != expected.getSchema()) {
assertTrue(assertContext.getText("Actual schema segment should exist."), actual.findSQLSegment(SchemaSegment.class).isPresent());
SchemaAssert.assertIs(assertContext, actual.findSQLSegment(SchemaSegment.class).get(), expected.getSchema());
assertTrue(assertContext.getText("Actual schema segment should exist."), actual.getSchema().isPresent());
SchemaAssert.assertIs(assertContext, actual.getSchema().get(), expected.getSchema());
} else {
assertFalse(assertContext.getText("Actual schema segment should not exist."), actual.findSQLSegment(SchemaSegment.class).isPresent());
assertFalse(assertContext.getText("Actual schema segment should not exist."), actual.getSchema().isPresent());
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册