You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by tu...@apache.org on 2022/06/14 01:19:48 UTC
[shardingsphere] branch master updated: Support column segments parse in create index on table statement (#18343)
This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 2bccdef4f33 Support column segments parse in create index on table statement (#18343)
2bccdef4f33 is described below
commit 2bccdef4f33fce7cc7d0ad822dc7adb55a08c741
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Tue Jun 14 09:19:42 2022 +0800
Support column segments parse in create index on table statement (#18343)
* refactor parse keyListWithExpression logic
* Support column segments parse in create index on table statement
* refactor logic
---
.../impl/MySQLDDLStatementSQLVisitor.java | 14 +-
.../impl/OracleDDLStatementSQLVisitor.java | 158 ++++++++++++---------
.../impl/SQLServerDDLStatementSQLVisitor.java | 17 +++
.../ddl/impl/CreateIndexStatementAssert.java | 11 ++
.../ddl/CreateIndexStatementTestCase.java | 4 +
.../src/main/resources/case/ddl/create-index.xml | 74 ++++++++++
6 files changed, 203 insertions(+), 75 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 8b618b4a40d..dfa14ffbca1 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
@@ -488,7 +488,7 @@ public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor
result.setConstraintName((ConstraintSegment) visit(ctx.constraintClause().constraintName()));
}
if (null != ctx.KEY() && null != ctx.PRIMARY()) {
- result.getPrimaryKeyColumns().addAll(getKeyColumnsFromKeyListWithExpression(ctx.keyListWithExpression()));
+ result.getPrimaryKeyColumns().addAll(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
return result;
}
if (null != ctx.FOREIGN()) {
@@ -496,7 +496,7 @@ public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor
return result;
}
if (null != ctx.UNIQUE()) {
- result.getIndexColumns().addAll(getKeyColumnsFromKeyListWithExpression(ctx.keyListWithExpression()));
+ result.getIndexColumns().addAll(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
if (null != ctx.indexName()) {
result.setIndexName((IndexSegment) visit(ctx.indexName()));
}
@@ -505,18 +505,19 @@ public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor
if (null != ctx.checkConstraint()) {
return result;
}
- result.getIndexColumns().addAll(getKeyColumnsFromKeyListWithExpression(ctx.keyListWithExpression()));
+ result.getIndexColumns().addAll(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
if (null != ctx.indexName()) {
result.setIndexName((IndexSegment) visit(ctx.indexName()));
}
return result;
}
- private Collection<ColumnSegment> getKeyColumnsFromKeyListWithExpression(final KeyListWithExpressionContext ctx) {
- Collection<ColumnSegment> result = new LinkedList<>();
+ @Override
+ public ASTNode visitKeyListWithExpression(final KeyListWithExpressionContext ctx) {
+ CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (KeyPartWithExpressionContext each : ctx.keyPartWithExpression()) {
if (null != each.keyPart()) {
- result.add((ColumnSegment) visit(each.keyPart().columnName()));
+ result.getValue().add((ColumnSegment) visit(each.keyPart().columnName()));
}
}
return result;
@@ -559,6 +560,7 @@ public final class MySQLDDLStatementSQLVisitor extends MySQLStatementSQLVisitor
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
IndexNameSegment indexName = new IndexNameSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), new IdentifierValue(ctx.indexName().getText()));
result.setIndex(new IndexSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), indexName));
+ result.setColumns(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
return result;
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
index 5e97491908a..6bf3ef60a53 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
@@ -23,14 +23,24 @@ import org.apache.shardingsphere.sql.parser.api.visitor.operation.SQLStatementVi
import org.apache.shardingsphere.sql.parser.api.visitor.type.DDLSQLVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AddColumnSpecificationContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AddConstraintSpecificationContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterAnalyticViewContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterAttributeDimensionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseDictionaryContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseLinkContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDefinitionClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDimensionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterFlashbackArchiveContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterIndexContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterOutlineContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterPackageContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSequenceContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSessionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSynonymContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSystemContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTableContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTriggerContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterViewContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AnalyzeContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AssociateStatisticsContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AuditContext;
@@ -39,46 +49,53 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.Column
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnOrVirtualDefinitionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CommentContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ConstraintClausesContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateContextContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateControlFileContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDatabaseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDatabaseLinkContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDefinitionClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDimensionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDirectoryContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDiskgroupContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateEditionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateFlashbackArchiveContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateFunctionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateIndexContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateInmemoryJoinGroupContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateLockdownProfileContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreatePFileContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateRestorePointContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateRollbackSegmentContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateSPFileContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropEditionContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOutlineContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterOutlineContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterAnalyticViewContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterAttributeDimensionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateSequenceContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSequenceContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateContextContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateIndexContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateSynonymContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateTableContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateEditionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DisassociateStatisticsContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropColumnSpecificationContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropConstraintClauseContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDatabaseLinkContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDimensionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDirectoryContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDiskgroupContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropEditionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropFlashbackArchiveContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropIndexContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTableContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDatabaseLinkContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseDictionaryContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseLinkContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterViewContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterPackageContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropInmemoryJoinGroupContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropLockdownProfileContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOperatorContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOutlineContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropPackageContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateSynonymContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropRestorePointContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropRollbackSegmentContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropSynonymContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDirectoryContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropViewContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDirectoryContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTableContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTriggerContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTriggerContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropViewContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FlashbackDatabaseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FlashbackTableContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FunctionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexExpressionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexExpressionsContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexNameContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndextypeNameContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.InlineConstraintContext;
@@ -96,21 +113,6 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.Rename
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableNameContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TruncateTableContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TypeNameContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateControlFileContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateFlashbackArchiveContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterFlashbackArchiveContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropFlashbackArchiveContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDiskgroupContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDiskgroupContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateRollbackSegmentContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropRollbackSegmentContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateLockdownProfileContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropLockdownProfileContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateInmemoryJoinGroupContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropInmemoryJoinGroupContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateRestorePointContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropRestorePointContext;
-import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOperatorContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.AlterDefinitionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.CreateDefinitionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
@@ -131,66 +133,66 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.Function
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DataTypeSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.sql.common.value.collection.CollectionValue;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterAnalyticViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterAttributeDimensionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseDictionaryStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseLinkStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDimensionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterFlashbackArchiveStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterIndexStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterOutlineStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterPackageStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSequenceStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSessionStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSynonymStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSystemStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTableStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTriggerStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterViewStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAnalyzeStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAssociateStatisticsStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAuditStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCommentStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateContextStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateControlFileStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDatabaseLinkStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDatabaseStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDimensionStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateFunctionStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreatePFileStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSPFileStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateControlFileStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateFlashbackArchiveStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterFlashbackArchiveStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropFlashbackArchiveStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDirectoryStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDiskgroupStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDiskgroupStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateRollbackSegmentStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropRollbackSegmentStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateLockdownProfileStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropLockdownProfileStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateEditionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateFlashbackArchiveStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateFunctionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateInmemoryJoinGroupStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropInmemoryJoinGroupStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateLockdownProfileStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreatePFileStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateRestorePointStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropRestorePointStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropOperatorStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropEditionStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropOutlineStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterOutlineStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterAnalyticViewStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterAttributeDimensionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateRollbackSegmentStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSPFileStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSequenceStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSequenceStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateContextStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateIndexStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSynonymStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateTableStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateEditionStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDisassociateStatisticsStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDatabaseLinkStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDimensionStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDirectoryStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDiskgroupStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropEditionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropFlashbackArchiveStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropIndexStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTableStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDatabaseLinkStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseDictionaryStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseLinkStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterViewStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterPackageStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropInmemoryJoinGroupStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropLockdownProfileStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropOperatorStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropOutlineStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropPackageStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSynonymStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropRestorePointStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropRollbackSegmentStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropSynonymStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDirectoryStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropViewStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTableStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTriggerStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTriggerStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropViewStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleFlashbackDatabaseStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleFlashbackTableStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleNoAuditStatement;
@@ -522,11 +524,29 @@ public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisito
OracleCreateIndexStatement result = new OracleCreateIndexStatement();
if (null != ctx.createIndexDefinitionClause().tableIndexClause()) {
result.setTable((SimpleTableSegment) visit(ctx.createIndexDefinitionClause().tableIndexClause().tableName()));
+ result.setColumns(((CollectionValue) visit(ctx.createIndexDefinitionClause().tableIndexClause().indexExpressions())).getValue());
}
result.setIndex((IndexSegment) visit(ctx.indexName()));
return result;
}
+ @Override
+ public ASTNode visitIndexExpressions(final IndexExpressionsContext ctx) {
+ CollectionValue<ColumnSegment> result = new CollectionValue<>();
+ for (IndexExpressionContext each : ctx.indexExpression()) {
+ ASTNode astNode = visit(each);
+ if (astNode instanceof ColumnSegment) {
+ result.getValue().add((ColumnSegment) astNode);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public ASTNode visitIndexExpression(final IndexExpressionContext ctx) {
+ return null != ctx.expr() ? visit(ctx.expr()) : visit(ctx.columnName());
+ }
+
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
OracleAlterIndexStatement result = new OracleAlterIndexStatement();
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
index 829f0399b71..f8f756f65ad 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDDLStatementSQLVisitor.java
@@ -40,6 +40,8 @@ import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.Col
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnDefinitionContext;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnDefinitionOptionContext;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNameContext;
+import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNameWithSortContext;
+import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNamesWithSortContext;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateDatabaseContext;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateFunctionContext;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateIndexContext;
@@ -334,9 +336,24 @@ public final class SQLServerDDLStatementSQLVisitor extends SQLServerStatementSQL
SQLServerCreateIndexStatement result = new SQLServerCreateIndexStatement();
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIndex((IndexSegment) visit(ctx.indexName()));
+ result.setColumns(((CollectionValue) visit(ctx.columnNamesWithSort())).getValue());
return result;
}
+ @Override
+ public ASTNode visitColumnNamesWithSort(final ColumnNamesWithSortContext ctx) {
+ CollectionValue<ColumnSegment> result = new CollectionValue<>();
+ for (ColumnNameWithSortContext each : ctx.columnNameWithSort()) {
+ result.getValue().add((ColumnSegment) visit(each));
+ }
+ return result;
+ }
+
+ @Override
+ public ASTNode visitColumnNameWithSort(final ColumnNameWithSortContext ctx) {
+ return visit(ctx.columnName());
+ }
+
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
SQLServerAlterIndexStatement result = new SQLServerAlterIndexStatement();
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateIndexStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateIndexStatementAssert.java
index ba62b033b8a..53afbf77937 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateIndexStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/ddl/impl/CreateIndexStatementAssert.java
@@ -22,12 +22,14 @@ import lombok.NoArgsConstructor;
import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateIndexStatement;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.column.ColumnAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.index.IndexAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.CreateIndexStatementTestCase;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
/**
* Create index statement assert.
@@ -45,6 +47,7 @@ public final class CreateIndexStatementAssert {
public static void assertIs(final SQLCaseAssertContext assertContext, final CreateIndexStatement actual, final CreateIndexStatementTestCase expected) {
assertTable(assertContext, actual, expected);
assertIndex(assertContext, actual, expected);
+ assertColumns(assertContext, actual, expected);
}
private static void assertTable(final SQLCaseAssertContext assertContext, final CreateIndexStatement actual, final CreateIndexStatementTestCase expected) {
@@ -62,4 +65,12 @@ public final class CreateIndexStatementAssert {
IndexAssert.assertIs(assertContext, actual.getIndex(), expected.getIndex());
}
}
+
+ private static void assertColumns(final SQLCaseAssertContext assertContext, final CreateIndexStatement actual, final CreateIndexStatementTestCase expected) {
+ if (null == expected.getIndexColumns() || expected.getIndexColumns().getColumns().isEmpty()) {
+ assertTrue(assertContext.getText("Actual columns segments should not exist."), actual.getColumns().isEmpty());
+ } else {
+ ColumnAssert.assertIs(assertContext, actual.getColumns(), expected.getIndexColumns().getColumns());
+ }
+ }
}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CreateIndexStatementTestCase.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CreateIndexStatementTestCase.java
index ed08842c270..491471a966b 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CreateIndexStatementTestCase.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/CreateIndexStatementTestCase.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domai
import lombok.Getter;
import lombok.Setter;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumns;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.index.ExpectedIndex;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedTable;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
@@ -37,4 +38,7 @@ public final class CreateIndexStatementTestCase extends SQLParserTestCase {
@XmlElement
private ExpectedTable table;
+
+ @XmlElement(name = "columns")
+ private ExpectedColumns indexColumns;
}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-index.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-index.xml
index 6bb9bf8b592..135b50711a9 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-index.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-index.xml
@@ -22,6 +22,9 @@
<simple-table name="t_log" start-index="28" stop-index="32" />
</table>
<index name="t_log_index" start-index="13" stop-index="23" />
+ <columns start-index="35" stop-index="36">
+ <column start-index="35" stop-index="36" name="id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_unique_index">
@@ -29,18 +32,27 @@
<simple-table name="t_log" start-index="35" stop-index="39" />
</table>
<index name="t_log_index" start-index="20" stop-index="30" />
+ <columns start-index="42" stop-index="43">
+ <column start-index="42" stop-index="43" name="id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_space">
<table>
<simple-table name="t_order" start-index="52" stop-index="58" />
</table>
+ <columns>
+ <column start-index="61" stop-index="68" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_back_quota">
<table>
<simple-table name="t_order" start-delimiter="`" end-delimiter="`" start-index="30" stop-index="38" />
</table>
+ <columns start-index="41" stop-index="50">
+ <column start-index="41" stop-index="50" name="order_id" start-delimiter="`" end-delimiter="`" />
+ </columns>
</create-index>
<create-index sql-case-id="create_composite_index">
@@ -48,12 +60,20 @@
<simple-table name="t_order" start-index="28" stop-index="34" />
</table>
<index name="order_index" start-index="13" stop-index="23" />
+ <columns start-index="37" stop-index="61">
+ <column name="order_id" start-index="37" stop-index="44" />
+ <column name="user_id" start-index="47" stop-index="53" />
+ <column name="status" start-index="56" stop-index="61" />
+ </columns>
</create-index>
<create-index sql-case-id="create_btree_index">
<table>
<simple-table name="t_order" start-index="28" stop-index="34" />
</table>
+ <columns start-index="49" stop-index="56">
+ <column start-index="49" stop-index="56" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_quota">
@@ -61,6 +81,9 @@
<simple-table name="t_order" start-delimiter=""" end-delimiter=""" start-index="30" stop-index="38" />
</table>
<index name="order_index" start-delimiter=""" end-delimiter=""" start-index="13" stop-index="25" />
+ <columns start-index="41" stop-index="50">
+ <column start-index="41" stop-index="50" name="order_id" start-delimiter=""" end-delimiter=""" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_function">
@@ -74,6 +97,9 @@
<table>
<simple-table name="t_order" start-delimiter=""" end-delimiter=""" start-index="30" stop-index="38" />
</table>
+ <columns start-index="41" stop-index="50">
+ <column start-index="41" stop-index="50" name="order_id" start-delimiter=""" end-delimiter=""" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_double_quota_and_uescape">
@@ -81,24 +107,36 @@
<table>
<simple-table name="u&t_order" start-index="58" stop-index="68" />
</table>
+ <columns start-index="71" stop-index="82">
+ <column start-index="71" stop-index="82" name="u&order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_concurrently">
<table>
<simple-table name="t_order" start-index="41" stop-index="47" />
</table>
+ <columns start-index="50" stop-index="57">
+ <column start-index="50" stop-index="57" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_if_not_exists">
<table>
<simple-table name="t_order" start-index="42" stop-index="48" />
</table>
+ <columns start-index="51" stop-index="58">
+ <column start-index="51" stop-index="58" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_using_btree">
<table>
<simple-table name="t_order" start-index="28" stop-index="34" />
</table>
+ <columns start-index="49" stop-index="56">
+ <column start-index="49" stop-index="56" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_unique">
@@ -106,6 +144,9 @@
<simple-table name="t_order" start-index="35" stop-index="41" />
</table>
<index name="order_index" start-index="20" stop-index="30" />
+ <columns start-index="44" stop-index="51">
+ <column start-index="44" stop-index="51" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_usable">
@@ -113,6 +154,9 @@
<simple-table name="t_order" start-index="35" stop-index="41" />
</table>
<index name="order_index" start-index="20" stop-index="30" />
+ <columns start-index="44" stop-index="51">
+ <column start-index="44" stop-index="51" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_unusable">
@@ -120,6 +164,9 @@
<simple-table name="t_order" start-index="35" stop-index="41" />
</table>
<index name="order_index" start-index="20" stop-index="30" />
+ <columns start-index="44" stop-index="51">
+ <column start-index="44" stop-index="51" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_immediate_invalidation">
@@ -127,6 +174,9 @@
<simple-table name="t_order" start-index="35" stop-index="41" />
</table>
<index name="order_index" start-index="20" stop-index="30" />
+ <columns start-index="44" stop-index="51">
+ <column start-index="44" stop-index="51" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_cluster_index">
@@ -138,24 +188,36 @@
<simple-table name="t_order" start-index="35" stop-index="41" />
</table>
<index name="order_index" start-index="20" stop-index="30" />
+ <columns start-index="44" stop-index="51">
+ <column start-index="44" stop-index="51" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_bracket">
<table>
<simple-table name="t_order" start-delimiter="[" end-delimiter="]" start-index="30" stop-index="38" />
</table>
+ <columns start-index="41" stop-index="50">
+ <column start-index="41" stop-index="50" name="order_id" start-delimiter="[" end-delimiter="]" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_no_default_fill_factor">
<table>
<simple-table name="t_order" start-index="35" stop-index="41" />
</table>
+ <columns start-index="44" stop-index="51">
+ <column start-index="44" stop-index="51" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_with_tablespace">
<table>
<simple-table name="t_order" start-index="25" stop-index="31" />
</table>
+ <columns start-index="34" stop-index="37">
+ <column start-index="34" stop-index="37" name="code" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_using_gist">
@@ -168,23 +230,35 @@
<table>
<simple-table name="t_order" start-index="50" stop-index="56" />
</table>
+ <columns start-index="58" stop-index="65">
+ <column start-index="58" stop-index="65" name="quantity" />
+ </columns>
</create-index>
<create-index sql-case-id="create_gin_index">
<table>
<simple-table name="t_order" start-index="24" stop-index="30" />
</table>
+ <columns start-index="43" stop-index="51">
+ <column start-index="43" stop-index="51" name="locations" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_using_ignore_dup_key">
<table>
<simple-table name="t_order" start-index="32" stop-index="38" />
</table>
+ <columns start-index="41" stop-index="48">
+ <column start-index="41" stop-index="48" name="order_id" />
+ </columns>
</create-index>
<create-index sql-case-id="create_index_using_drop_existing">
<table>
<simple-table name="t_order" start-index="52" stop-index="58" />
</table>
+ <columns start-index="60" stop-index="67">
+ <column start-index="60" stop-index="67" name="order_id" />
+ </columns>
</create-index>
</sql-parser-test-cases>