This is an automated email from the ASF dual-hosted git repository.
lujingshang 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 ae228f3 Proofread the SQLServer syntax of trigger, sequence and index
(#12435)
ae228f3 is described below
commit ae228f307059c26cd0e952cdd08dc74cafd55599
Author: Icesource <[email protected]>
AuthorDate: Wed Sep 22 09:34:10 2021 +0800
Proofread the SQLServer syntax of trigger, sequence and index (#12435)
* add SQLServer grammar create trigger
* add SQLServer grammar create sequence
* add SQLServer grammar alter sequence and trigger
* Improve the grammatical definition of alter index and create index
* add sql parser tests for trigger and create index
---
.../src/main/antlr4/imports/sqlserver/BaseRule.g4 | 11 +-
.../main/antlr4/imports/sqlserver/DDLStatement.g4 | 120 ++++++++++++++++++++-
.../antlr4/imports/sqlserver/SQLServerKeyword.g4 | 64 +++++++++++
.../sql/parser/autogen/SQLServerStatement.g4 | 4 +
.../impl/SQLServerDDLStatementSQLVisitor.java | 34 +++++-
.../core/database/visitor/SQLVisitorRule.java | 2 +
.../ddl/SQLServerAlterSequenceStatement.java} | 50 ++-------
.../ddl/SQLServerAlterTriggerStatement.java} | 50 ++-------
.../ddl/SQLServerCreateSequenceStatement.java} | 50 ++-------
.../ddl/SQLServerCreateTriggerStatement.java} | 50 ++-------
.../src/main/resources/case/ddl/alter-index.xml | 4 +
.../ddl/alter-trigger.xml} | 6 +-
.../src/main/resources/case/ddl/create-index.xml | 12 +++
.../main/resources/case/ddl/create-sequence.xml | 1 +
.../src/main/resources/case/ddl/create-trigger.xml | 3 +-
.../resources/sql/supported/ddl/alter-index.xml | 1 +
.../resources/sql/supported/ddl/alter-sequence.xml | 2 +-
.../ddl/{alter-sequence.xml => alter-trigger.xml} | 5 +-
.../resources/sql/supported/ddl/create-index.xml | 3 +
.../sql/supported/ddl/create-sequence.xml | 8 ++
.../ddl/{alter-sequence.xml => create-trigger.xml} | 10 +-
21 files changed, 318 insertions(+), 172 deletions(-)
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4
index 3bfbe02..090680c 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4
@@ -99,7 +99,8 @@ unreservedWord
| OUTPUT | INSERTED | DELETED | KB | MB | GB | TB | FILENAME | MAXSIZE |
FILEGROWTH | UNLIMITED | MEMORY_OPTIMIZED_DATA | FILEGROUP |
NON_TRANSACTED_ACCESS
| DB_CHAINING | TRUSTWORTHY | GROUP | ROWS | DATE | DATEPART | CAST | DAY
| FORWARD_ONLY | KEYSET | FAST_FORWARD | READ_ONLY | SCROLL_LOCKS |
OPTIMISTIC | TYPE_WARNING | SCHEMABINDING | CALLER
- | OWNER | SNAPSHOT | REPEATABLE | SERIALIZABLE | NATIVE_COMPILATION |
VIEW_METADATA
+ | OWNER | SNAPSHOT | REPEATABLE | SERIALIZABLE | NATIVE_COMPILATION |
VIEW_METADATA | INSTEAD | APPEND | INCREMENT | CACHE | MINVALUE | MAXVALUE |
RESTART
+ | LOB_COMPACTION | COMPRESS_ALL_ROW_GROUPS | REORGANIZE | RESUME | PAUSE |
ABORT
;
databaseName
@@ -122,6 +123,14 @@ viewName
: (owner DOT_)? name
;
+triggerName
+ : (schemaName DOT_)? name
+ ;
+
+sequenceName
+ : (schemaName DOT_)? name
+ ;
+
tableName
: (owner DOT_)? name
;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DDLStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DDLStatement.g4
index 05ae8f5..ac74547 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DDLStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DDLStatement.g4
@@ -24,7 +24,7 @@ createTable
;
createIndex
- : CREATE createIndexSpecification INDEX indexName ON tableName
columnNamesWithSort
+ : CREATE createIndexSpecification INDEX indexName ON tableName
columnNamesWithSort createIndexClause
;
createDatabase
@@ -43,12 +43,28 @@ createView
: CREATE (OR ALTER)? VIEW viewName createViewClause
;
+createTrigger
+ : CREATE (OR ALTER)? TRIGGER triggerName ON triggerTarget
createTriggerClause
+ ;
+
+createSequence
+ : CREATE SEQUENCE sequenceName createOrAlterSequenceClause*
+ ;
+
alterTable
: ALTER TABLE tableName alterDefinitionClause (COMMA_
alterDefinitionClause)*
;
alterIndex
- : ALTER INDEX (indexName | ALL) ON tableName
+ : ALTER INDEX (indexName | ALL) ON tableName alterIndexClause
+ ;
+
+alterTrigger
+ : ALTER TRIGGER triggerName ON triggerTarget createTriggerClause
+ ;
+
+alterSequence
+ : ALTER SEQUENCE sequenceName createOrAlterSequenceClause*
;
dropTable
@@ -316,7 +332,7 @@ createIndexSpecification
;
alterDefinitionClause
- : addColumnSpecification | modifyColumnSpecification | alterDrop |
alterCheckConstraint | alterTrigger | alterSwitch | alterSet | alterTableOption
| REBUILD
+ : addColumnSpecification | modifyColumnSpecification | alterDrop |
alterCheckConstraint | alterTableTrigger | alterSwitch | alterSet |
alterTableOption | REBUILD
;
addColumnSpecification
@@ -396,7 +412,7 @@ alterCheckConstraint
: WITH? (CHECK | NOCHECK) CONSTRAINT (ALL | constraintName)
;
-alterTrigger
+alterTableTrigger
: (ENABLE| DISABLE) TRIGGER (ALL | ignoredIdentifiers)
;
@@ -619,7 +635,7 @@ functionOption
;
validStatement
- : (createTable | alterTable | dropTable | truncateTable| insert
+ : (createTable | alterTable | dropTable | truncateTable | insert
| update | delete | select | setVariable | declareVariable) SEMI_?
;
@@ -678,3 +694,97 @@ withCommonTableExpr
commonTableExpr
: name (LP_ columnName (COMMA_ columnName)* RP_)? AS LP_ select RP_
;
+
+createTriggerClause
+ : (WITH dmlTriggerOption COMMA_ dmlTriggerOption)? (FOR | AFTER | INSTEAD
OF)
+ INSERT? COMMA_? UPDATE? COMMA_? DELETE? COMMA_? (WITH APPEND)? (NOT FOR
REPLICATION)?
+ AS (compoundStatement | EXTERNAL NAME methodSpecifier)
+ ;
+
+dmlTriggerOption
+ : ENCRYPTION | executeAsClause | NATIVE_COMPILATION | SCHEMABINDING |
+ ;
+
+methodSpecifier
+ : name DOT_ name DOT_ name
+ ;
+
+triggerTarget
+ : tableName | viewName | ALL SERVER | DATABASE
+ ;
+
+createOrAlterSequenceClause
+ : AS dataType
+ | (START | RESTART) WITH expr
+ | INCREMENT BY expr
+ | MINVALUE expr? | NO MINVALUE
+ | MAXVALUE expr? | NO MAXVALUE
+ | CACHE expr | NO CACHE
+ | NO? CYCLE
+ ;
+
+createIndexClause
+ : (INCLUDE columnNamesWithSort)? (WHERE filterPredicate)? (WITH LP_
relationalIndexOption (COMMA_ relationalIndexOption)* RP_)?
+ (ON (schemaName LP_ columnName RP_ | name))? (FILESTREAM_ON (name |
stringLiterals))?
+ ;
+
+filterPredicate
+ : conjunct (AND conjunct)*
+ ;
+
+conjunct
+ : columnName IN LP_ expr (COMMA_ expr)* RP_
+ | columnName comparisonOperator expr
+ ;
+
+alterIndexClause
+ : REBUILD (PARTITION EQ_ (ALL | expr))? (WITH LP_ relationalIndexOption
(COMMA_ relationalIndexOption)* RP_)?
+ | DISABLE
+ | REORGANIZE (PARTITION EQ_ expr)? (WITH LP_ reorganizeOption RP_)?
+ | SET LP_ setIndexOption (COMMA_ setIndexOption) RP_
+ | RESUME (WITH LP_ resumableIndexOptions (COMMA_ resumableIndexOptions)*
RP_)?
+ | PAUSE
+ | ABORT
+ ;
+
+relationalIndexOption
+ : PAD_INDEX EQ_ (ON | OFF)
+ | FILLFACTOR EQ_ expr
+ | SORT_IN_TEMPDB EQ_ (ON | OFF)
+ | IGNORE_DUP_KEY EQ_ (ON | OFF)
+ | STATISTICS_NORECOMPUTE EQ_ (ON | OFF)
+ | STATISTICS_INCREMENTAL EQ_ (ON | OFF)
+ | DROP_EXISTING EQ_ (ON | OFF)
+ | ONLINE EQ_ (ON lowPriorityLockWait? | OFF)
+ | RESUMABLE EQ_ (ON | OFF)
+ | MAX_DURATION EQ_ expr MINUTES?
+ | ALLOW_ROW_LOCKS EQ_ (ON | OFF)
+ | ALLOW_PAGE_LOCKS EQ_ (ON | OFF)
+ | OPTIMIZE_FOR_SEQUENTIAL_KEY EQ_ (ON | OFF)
+ | MAXDOP EQ_ expr
+ | DATA_COMPRESSION EQ_ (NONE | ROW | PAGE | COLUMNSTORE |
COLUMNSTORE_ARCHIVE) (ON PARTITIONS LP_ partitionNumberRange (COMMA_
partitionNumberRange)*)?
+ ;
+
+partitionNumberRange
+ : expr (TO expr)?
+ ;
+
+reorganizeOption
+ : LOB_COMPACTION EQ_ (ON | OFF)
+ | COMPRESS_ALL_ROW_GROUPS EQ_ (ON | OFF)
+ ;
+
+setIndexOption
+ : ALLOW_ROW_LOCKS EQ_ (ON | OFF)
+ | ALLOW_PAGE_LOCKS EQ_ (ON | OFF)
+ | OPTIMIZE_FOR_SEQUENTIAL_KEY EQ_ (ON | OFF)
+ | IGNORE_DUP_KEY EQ_ (ON | OFF)
+ | STATISTICS_NORECOMPUTE EQ_ (ON | OFF)
+ | COMPRESSION_DELAY EQ_ (expr MINUTES?)
+ ;
+
+resumableIndexOptions
+ : MAXDOP EQ_ expr
+ | MAX_DURATION EQ_ expr MINUTES?
+ | lowPriorityLockWait
+ ;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
index 45c67c6..7b38643 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/SQLServerKeyword.g4
@@ -1250,3 +1250,67 @@ NATIVE_COMPILATION
VIEW_METADATA
: V I E W UL_ M E T A D A T A
;
+
+AFTER
+ : A F T E R
+ ;
+
+INSTEAD
+ : I N S T E A D
+ ;
+
+APPEND
+ : A P P E N D
+ ;
+
+INCREMENT
+ : I N C R E M E N T
+ ;
+
+CYCLE
+ : C Y C L E
+ ;
+
+CACHE
+ : C A C H E
+ ;
+
+MINVALUE
+ : M I N V A L U E
+ ;
+
+MAXVALUE
+ : M A X V A L U E
+ ;
+
+RESTART
+ : R E S T A R T
+ ;
+
+LOB_COMPACTION
+ : L O B UL_ C O M P A C T I O N
+ ;
+
+COMPRESS_ALL_ROW_GROUPS
+ : C O M P R E S S UL_ A L L UL_ R O W UL_ G R O U P S
+ ;
+
+REORGANIZE
+ : R E O R G A N I Z E
+ ;
+
+RESUME
+ : R E S U M E
+ ;
+
+PAUSE
+ : P A U S E
+ ;
+
+ABORT
+ : A B O R T
+ ;
+
+INCLUDE
+ : I N C L U D E
+ ;
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
index c626063..7a429c2 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
@@ -31,7 +31,11 @@ execute
| createDatabase
| createProcedure
| createView
+ | createTrigger
+ | createSequence
| alterTable
+ | alterTrigger
+ | alterSequence
| dropTable
| truncateTable
| createFunction
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 4be40d0..1cd53a4 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
@@ -26,19 +26,23 @@ import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.Alt
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterColumnAddOptionContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterDefinitionClauseContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterIndexContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterSequenceContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterTableContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterTableDropConstraintContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterTriggerContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnConstraintContext;
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.CreateDatabaseContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateDefinitionClauseContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateFunctionContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateIndexContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateProcedureContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateSequenceContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTableContext;
-import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateDatabaseContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTableDefinitionContext;
-import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateFunctionContext;
-import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateProcedureContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTriggerContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateViewContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropColumnSpecificationContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropConstraintNameContext;
@@ -64,12 +68,16 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DataTypeS
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.sqlserver.ddl.SQLServerAlterIndexStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterSequenceStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterTableStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterTriggerStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateDatabaseStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateFunctionStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateIndexStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateProcedureStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateSequenceStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateTableStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateTriggerStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateViewStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropIndexStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropTableStatement;
@@ -344,4 +352,24 @@ public final class SQLServerDDLStatementSQLVisitor extends
SQLServerStatementSQL
result.setSelect((SQLServerSelectStatement)
visit(ctx.createViewClause().select()));
return result;
}
+
+ @Override
+ public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
+ return new SQLServerCreateTriggerStatement();
+ }
+
+ @Override
+ public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
+ return new SQLServerCreateSequenceStatement();
+ }
+
+ @Override
+ public ASTNode visitAlterTrigger(final AlterTriggerContext ctx) {
+ return new SQLServerAlterTriggerStatement();
+ }
+
+ @Override
+ public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
+ return new SQLServerAlterSequenceStatement();
+ }
}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
index fc0ffd4..7253d44 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
@@ -99,6 +99,8 @@ public enum SQLVisitorRule {
DROP_SERVER("DropServer", SQLStatementType.DDL),
CREATE_TRIGGER("CreateTrigger", SQLStatementType.DDL),
+
+ ALTER_TRIGGER("AlterTrigger", SQLStatementType.DDL),
DROP_TRIGGER("DropTrigger", SQLStatementType.DDL),
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterSequenceStatement.java
similarity index 52%
copy from
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterSequenceStatement.java
index c626063..b874d5c 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterSequenceStatement.java
@@ -15,44 +15,16 @@
* limitations under the License.
*/
-grammar SQLServerStatement;
+package
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl;
-import Symbol, Comments, DMLStatement, DDLStatement, TCLStatement,
DCLStatement, StoreProcedure;
+import lombok.ToString;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
-execute
- : (select
- | insert
- | update
- | delete
- | createIndex
- | alterIndex
- | dropIndex
- | createTable
- | createDatabase
- | createProcedure
- | createView
- | alterTable
- | dropTable
- | truncateTable
- | createFunction
- | setTransaction
- | beginTransaction
- | setImplicitTransactions
- | commit
- | rollback
- | savepoint
- | grant
- | revoke
- | deny
- | createUser
- | dropUser
- | alterUser
- | createRole
- | dropRole
- | alterRole
- | createLogin
- | dropLogin
- | alterLogin
- | call
- ) SEMI_?
- ;
+/**
+ * SQLServer alter sequence statement.
+ */
+@ToString
+public class SQLServerAlterSequenceStatement extends AbstractSQLStatement
implements DDLStatement, SQLServerStatement {
+}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterTriggerStatement.java
similarity index 52%
copy from
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterTriggerStatement.java
index c626063..e8e7151 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerAlterTriggerStatement.java
@@ -15,44 +15,16 @@
* limitations under the License.
*/
-grammar SQLServerStatement;
+package
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl;
-import Symbol, Comments, DMLStatement, DDLStatement, TCLStatement,
DCLStatement, StoreProcedure;
+import lombok.ToString;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
-execute
- : (select
- | insert
- | update
- | delete
- | createIndex
- | alterIndex
- | dropIndex
- | createTable
- | createDatabase
- | createProcedure
- | createView
- | alterTable
- | dropTable
- | truncateTable
- | createFunction
- | setTransaction
- | beginTransaction
- | setImplicitTransactions
- | commit
- | rollback
- | savepoint
- | grant
- | revoke
- | deny
- | createUser
- | dropUser
- | alterUser
- | createRole
- | dropRole
- | alterRole
- | createLogin
- | dropLogin
- | alterLogin
- | call
- ) SEMI_?
- ;
+/**
+ * SQLServer alter trigger statement.
+ */
+@ToString
+public final class SQLServerAlterTriggerStatement extends AbstractSQLStatement
implements DDLStatement, SQLServerStatement {
+}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerCreateSequenceStatement.java
similarity index 52%
copy from
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerCreateSequenceStatement.java
index c626063..6414cab 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerCreateSequenceStatement.java
@@ -15,44 +15,16 @@
* limitations under the License.
*/
-grammar SQLServerStatement;
+package
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl;
-import Symbol, Comments, DMLStatement, DDLStatement, TCLStatement,
DCLStatement, StoreProcedure;
+import lombok.ToString;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
-execute
- : (select
- | insert
- | update
- | delete
- | createIndex
- | alterIndex
- | dropIndex
- | createTable
- | createDatabase
- | createProcedure
- | createView
- | alterTable
- | dropTable
- | truncateTable
- | createFunction
- | setTransaction
- | beginTransaction
- | setImplicitTransactions
- | commit
- | rollback
- | savepoint
- | grant
- | revoke
- | deny
- | createUser
- | dropUser
- | alterUser
- | createRole
- | dropRole
- | alterRole
- | createLogin
- | dropLogin
- | alterLogin
- | call
- ) SEMI_?
- ;
+/**
+ * SQLServer create sequence statement.
+ */
+@ToString
+public class SQLServerCreateSequenceStatement extends AbstractSQLStatement
implements DDLStatement, SQLServerStatement {
+}
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerCreateTriggerStatement.java
similarity index 52%
copy from
shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
copy to
shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerCreateTriggerStatement.java
index c626063..f453d5b 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/ddl/SQLServerCreateTriggerStatement.java
@@ -15,44 +15,16 @@
* limitations under the License.
*/
-grammar SQLServerStatement;
+package
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl;
-import Symbol, Comments, DMLStatement, DDLStatement, TCLStatement,
DCLStatement, StoreProcedure;
+import lombok.ToString;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
-execute
- : (select
- | insert
- | update
- | delete
- | createIndex
- | alterIndex
- | dropIndex
- | createTable
- | createDatabase
- | createProcedure
- | createView
- | alterTable
- | dropTable
- | truncateTable
- | createFunction
- | setTransaction
- | beginTransaction
- | setImplicitTransactions
- | commit
- | rollback
- | savepoint
- | grant
- | revoke
- | deny
- | createUser
- | dropUser
- | alterUser
- | createRole
- | dropRole
- | alterRole
- | createLogin
- | dropLogin
- | alterLogin
- | call
- ) SEMI_?
- ;
+/**
+ * SQLServer create trigger statement.
+ */
+@ToString
+public class SQLServerCreateTriggerStatement extends AbstractSQLStatement
implements DDLStatement, SQLServerStatement {
+}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-index.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-index.xml
index b79cd08..54d77af 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-index.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-index.xml
@@ -73,6 +73,10 @@
<alter-index sql-case-id="alter_index_with_quota_bracket">
<table name="t_order" start-delimiter="[" end-delimiter="]"
start-index="29" stop-index="37" />
</alter-index>
+
+ <alter-index sql-case-id="alter_index_with_reorganize">
+ <table name="t_order" start-index="27" stop-index="33" />
+ </alter-index>
<alter-index sql-case-id="alter_index_alter_column" />
<alter-index sql-case-id="alter_index_set_tablespace" />
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-trigger.xml
similarity index 87%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-trigger.xml
index b2dc852..f86c878 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-trigger.xml
@@ -16,6 +16,6 @@
~ limitations under the License.
-->
-<sql-cases>
- <sql-case id="alter_sequence" value="ALTER SEQUENCE seq_id MINVALUE 10"
db-types="PostgreSQL" />
-</sql-cases>
+<sql-parser-test-cases>
+ <create-trigger sql-case-id="alter_trigger" />
+</sql-parser-test-cases>
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 177b167..6bb9bf8 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
@@ -175,4 +175,16 @@
<simple-table name="t_order" start-index="24" stop-index="30" />
</table>
</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>
+ </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>
+ </create-index>
</sql-parser-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-sequence.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-sequence.xml
index c9f5747..60d0d48 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-sequence.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-sequence.xml
@@ -20,4 +20,5 @@
<create-sequence sql-case-id="create_sequence" />
<create-sequence sql-case-id="create_sequence_with_option" />
<create-sequence sql-case-id="create_sequence_complex" />
+ <create-sequence sql-case-id="create_sequence_with_all_arguments"/>
</sql-parser-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-trigger.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-trigger.xml
index 5258801..acf6de9 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-trigger.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/create-trigger.xml
@@ -17,7 +17,8 @@
-->
<sql-parser-test-cases>
-<!-- <create-trigger sql-case-id="create_trigger" />-->
+ <create-trigger sql-case-id="create_trigger" />
+ <create-trigger sql-case-id="create_trigger_with_database_scoped" />
<!-- <create-trigger sql-case-id="create_trigger_of_balance" />-->
<!-- <create-trigger sql-case-id="create_trigger_with_when" />-->
<!-- <create-trigger sql-case-id="create_trigger_after_update" />-->
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-index.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-index.xml
index 51b0c1c..3157e5a 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-index.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-index.xml
@@ -33,6 +33,7 @@
<sql-case id="alter_index_with_update" value="ALTER INDEX order_index
UPDATE BLOCK REFERENCES" db-types="Oracle" />
<sql-case id="alter_index_rebuild" value="ALTER INDEX order_index ON
t_order REBUILD" db-types="SQLServer" />
<sql-case id="alter_index_with_quota_bracket" value="ALTER INDEX
[order_index] ON [t_order] REBUILD" db-types="SQLServer" />
+ <sql-case id="alter_index_with_reorganize" value="ALTER INDEX order_index
ON t_order REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON)" db-types="SQLServer"
/>
<sql-case id="alter_index_set_tablespace" value="ALTER INDEX distributors
SET TABLESPACE fasttablespace" db-types="PostgreSQL" />
<sql-case id="alter_index_alter_column" value="ALTER INDEX t_order_idx
ALTER COLUMN 3 SET STATISTICS 1000" db-types="PostgreSQL"/>
</sql-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
index b2dc852..b8c3650 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
@@ -17,5 +17,5 @@
-->
<sql-cases>
- <sql-case id="alter_sequence" value="ALTER SEQUENCE seq_id MINVALUE 10"
db-types="PostgreSQL" />
+ <sql-case id="alter_sequence" value="ALTER SEQUENCE seq_id MINVALUE 10"
db-types="PostgreSQL,SQLServer" />
</sql-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-trigger.xml
similarity index 79%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-trigger.xml
index b2dc852..1e24f5e 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-trigger.xml
@@ -17,5 +17,8 @@
-->
<sql-cases>
- <sql-case id="alter_sequence" value="ALTER SEQUENCE seq_id MINVALUE 10"
db-types="PostgreSQL" />
+ <sql-case id="alter_trigger" value="ALTER TRIGGER Sales.bonus_reminder
+ ON Sales.SalesPersonQuotaHistory
+ AFTER INSERT
+ AS INSERT INTO SalesPersonQuotaHistory VALUES(t1, 100)"
db-types="SQLServer" />
</sql-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-index.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-index.xml
index 510c04f..f4521e2 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-index.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-index.xml
@@ -45,4 +45,7 @@
<sql-case id="create_index_with_cluster_index" value="CREATE UNIQUE INDEX
order_index ON CLUSTER t_cluster" db-types="Oracle" />
<sql-case id="create_index_with_bitmap" value="CREATE BITMAP INDEX
order_index ON t_order (order_id)" db-types="Oracle" />
<sql-case id="create_gin_index" value="CREATE INDEX gin_idx ON t_order
USING GIN (locations) WITH (fastupdate = off)" db-types="PostgreSQL" />
+ <sql-case id="create_index_using_ignore_dup_key" value="CREATE UNIQUE
INDEX AK_Index ON t_order (order_id) WITH (IGNORE_DUP_KEY = ON)"
db-types="SQLServer" />
+ <sql-case id="create_index_using_drop_existing" value="CREATE NONCLUSTERED
INDEX IX_WorkOrder_ProductID ON t_order(order_id)
+ WITH (FILLFACTOR = 80, PAD_INDEX = ON, DROP_EXISTING = ON);"
db-types="SQLServer" />
</sql-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-sequence.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-sequence.xml
index fce27db..7662bce 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-sequence.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-sequence.xml
@@ -20,4 +20,12 @@
<sql-case id="create_sequence" value="CREATE SEQUENCE seq_id"
db-types="PostgreSQL" />
<sql-case id="create_sequence_with_option" value="CREATE SEQUENCE
TEMPORARY seq_option" db-types="PostgreSQL" />
<sql-case id="create_sequence_complex" value="CREATE SEQUENCE seq_complex
MINVALUE 0 MAXVALUE 100 START 0" db-types="PostgreSQL" />
+ <sql-case id="create_sequence_with_all_arguments" value="CREATE SEQUENCE
Test.DecSeq
+ AS decimal(3,0)
+ START WITH 125
+ INCREMENT BY 25
+ MINVALUE 100
+ MAXVALUE 200
+ CYCLE
+ CACHE 3;" db-types="SQLServer" />
</sql-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-trigger.xml
similarity index 68%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-trigger.xml
index b2dc852..6bbc419 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-sequence.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/create-trigger.xml
@@ -17,5 +17,13 @@
-->
<sql-cases>
- <sql-case id="alter_sequence" value="ALTER SEQUENCE seq_id MINVALUE 10"
db-types="PostgreSQL" />
+ <sql-case id="create_trigger" value="CREATE TRIGGER reminder1
+ ON Sales.Customer
+ AFTER INSERT, UPDATE
+ AS INSERT INTO SalesPersonQuotaHistory VALUES(t1, 100)"
db-types="SQLServer" />
+ <sql-case id="create_trigger_with_database_scoped" value="CREATE TRIGGER
ddl_trig_database
+ ON ALL SERVER
+ AFTER INSERT
+ AS
+ SELECT EVENTDATA()" db-types="SQLServer" />
</sql-cases>