You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/11/24 14:55:10 UTC
[shardingsphere] branch master updated: fix visit of UNIQUNE KEY
(#8311)
This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new e69c347 fix visit of UNIQUNE KEY (#8311)
e69c347 is described below
commit e69c34703d56a06c77781c703e55459bd2ed0e78
Author: JingShang Lu <lu...@apache.org>
AuthorDate: Tue Nov 24 22:54:19 2020 +0800
fix visit of UNIQUNE KEY (#8311)
---
.../statement/impl/MySQLDDLStatementSQLVisitor.java | 16 ++++++++++++++--
.../statement/ddl/impl/CreateTableStatementAssert.java | 3 +--
.../src/main/resources/case/ddl/create-table.xml | 4 ++--
.../src/main/resources/sql/supported/ddl/create.xml | 2 +-
4 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
index 2c7b5d4..9af658c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/impl/MySQLDDLStatementSQLVisitor.java
@@ -349,16 +349,28 @@ public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor
ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
if (null != ctx.KEY() && null != ctx.PRIMARY()) {
result.getPrimaryKeyColumns().addAll(getKeyColumnsFromKeyListWithExpression(ctx.keyListWithExpression()));
+ return result;
}
if (null != ctx.FOREIGN()) {
result.setReferencedTable((SimpleTableSegment) visit(ctx.referenceDefinition()));
+ return result;
}
if (null != ctx.UNIQUE()) {
result.getIndexColumns().addAll(getKeyColumnsFromKeyListWithExpression(ctx.keyListWithExpression()));
if (null != ctx.indexNameAndType()) {
- result.setIndexName(new IndexSegment(ctx.indexNameAndType().indexName().start.getStartIndex(), ctx.indexNameAndType().indexName().stop.getStopIndex(),
- (IdentifierValue) visit(ctx.indexNameAndType().indexName())));
+ result.setIndexName((IndexSegment) visit(ctx.indexNameAndType().indexName()));
}
+ return result;
+ }
+ if (null != ctx.checkConstraint()) {
+ return result;
+ }
+ result.getIndexColumns().addAll(getKeyColumnsFromKeyListWithExpression(ctx.keyListWithExpression()));
+ if (null != ctx.indexName()) {
+ result.setIndexName((IndexSegment) visit(ctx.indexName()));
+ }
+ if (null != ctx.indexNameAndType()) {
+ result.setIndexName((IndexSegment) visit(ctx.indexNameAndType().indexName()));
}
return result;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateTableStatementAssert.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateTableStatementAssert.java
index 2c9c9b9..133b648 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateTableStatementAssert.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateTableStatementAssert.java
@@ -47,8 +47,7 @@ public final class CreateTableStatementAssert {
public static void assertIs(final SQLCaseAssertContext assertContext, final CreateTableStatement actual, final CreateTableStatementTestCase expected) {
assertTable(assertContext, actual, expected);
assertColumnDefinitions(assertContext, actual, expected);
- // TODO add assert constraint
-// assertConstraintDefinitions(assertContext, actual, expected);
+ assertConstraintDefinitions(assertContext, actual, expected);
}
private static void assertTable(final SQLCaseAssertContext assertContext, final CreateTableStatement actual, final CreateTableStatementTestCase expected) {
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/create-table.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/create-table.xml
index 43ed479..29ab8de 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/create-table.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/create-table.xml
@@ -441,8 +441,8 @@
<column-definition type="VARCHAR" start-index="111" stop-index="129">
<column name="column3" />
</column-definition>
- <constraint-definition start-index="132" stop-index="171">
- <index-column name="order_id" start-index="163" stop-index="170"/>
+ <constraint-definition index-name="order_id_index" start-index="132" stop-index="190">
+ <index-column name="order_id" start-index="182" stop-index="189"/>
</constraint-definition>
</create-table>
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create.xml
index 6124a2b..220c9c1 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/create.xml
@@ -51,7 +51,7 @@
<sql-case id="create_table_with_out_of_line_primary_key" value="CREATE TABLE t_order (order_id INT, user_id INT, status VARCHAR(10), column1 VARCHAR(10), column2 VARCHAR(10), column3 VARCHAR(10), CONSTRAINT pk_order_id PRIMARY KEY (order_id))" />
<sql-case id="create_table_with_out_of_line_composite_primary_key" value="CREATE TABLE t_order (order_id INT, user_id INT, status VARCHAR(10), column1 VARCHAR(10), column2 VARCHAR(10), column3 VARCHAR(10), CONSTRAINT pk_order_id PRIMARY KEY (order_id, user_id, status))"/>
<!-- TODO support PostgreSQL Oracle SQLServer-->
- <sql-case id="create_table_with_out_of_line_unique_key" value="CREATE TABLE t_order (order_id INT, user_id INT, status VARCHAR(10), column1 VARCHAR(10), column2 VARCHAR(10), column3 VARCHAR(10), CONSTRAINT uk_order_id UNIQUE (order_id))" db-types="MySQL"/>
+ <sql-case id="create_table_with_out_of_line_unique_key" value="CREATE TABLE t_order (order_id INT, user_id INT, status VARCHAR(10), column1 VARCHAR(10), column2 VARCHAR(10), column3 VARCHAR(10), CONSTRAINT uk_order_id UNIQUE KEY order_id_index (order_id))" db-types="MySQL"/>
<!-- TODO support PostgreSQL Oracle SQLServer-->
<sql-case id="create_table_with_out_of_line_composite_unique_key" value="CREATE TABLE t_order (order_id INT, user_id INT, status VARCHAR(10), column1 VARCHAR(10), column2 VARCHAR(10), column3 VARCHAR(10), CONSTRAINT uk_order_id UNIQUE (order_id, user_id, status))" db-types="MySQL"/>
<sql-case id="create_table_with_out_of_line_foreign_key" value="CREATE TABLE t_order_item (item_id INT, order_id INT, user_id INT, status VARCHAR(10), column1 VARCHAR(10), column2 VARCHAR(10), column3 VARCHAR(10), CONSTRAINT fk_order_id FOREIGN KEY (order_id) REFERENCES t_order (order_id) ON UPDATE CASCADE ON DELETE CASCADE)" db-types="MySQL,PostgreSQL,SQLServer" />