diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableAnalyzePartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableAnalyzePartition.java new file mode 100644 index 0000000000..c2948d0a04 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableAnalyzePartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableAnalyzePartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableCheckPartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableCheckPartition.java new file mode 100644 index 0000000000..f3ebbb2ead --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableCheckPartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableCheckPartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableDiscardPartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableDiscardPartition.java new file mode 100644 index 0000000000..b019a43f1c --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableDiscardPartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableDiscardPartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableImportPartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableImportPartition.java new file mode 100644 index 0000000000..8e4f3c4171 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableImportPartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableImportPartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableOptimizePartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableOptimizePartition.java new file mode 100644 index 0000000000..5fcffffa9d --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableOptimizePartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableOptimizePartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableRebuildPartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableRebuildPartition.java new file mode 100644 index 0000000000..d6c88212e8 --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableRebuildPartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableRebuildPartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableRepairPartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableRepairPartition.java new file mode 100644 index 0000000000..8ca2c9be7d --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableRepairPartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableRepairPartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java index b4a293ee52..e63e93c1fa 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableStatement.java @@ -33,6 +33,9 @@ public class SQLAlterTableStatement extends SQLStatementImpl implements SQLDDLSt private boolean updateGlobalIndexes = false; private boolean invalidateGlobalIndexes = false; + private boolean removePatiting = false; + private boolean upgradePatiting = false; + public SQLAlterTableStatement(){ } @@ -49,6 +52,22 @@ public class SQLAlterTableStatement extends SQLStatementImpl implements SQLDDLSt this.ignore = ignore; } + public boolean isRemovePatiting() { + return removePatiting; + } + + public void setRemovePatiting(boolean removePatiting) { + this.removePatiting = removePatiting; + } + + public boolean isUpgradePatiting() { + return upgradePatiting; + } + + public void setUpgradePatiting(boolean upgradePatiting) { + this.upgradePatiting = upgradePatiting; + } + public boolean isUpdateGlobalIndexes() { return updateGlobalIndexes; } diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableTruncatePartition.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableTruncatePartition.java new file mode 100644 index 0000000000..916964bcfb --- /dev/null +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLAlterTableTruncatePartition.java @@ -0,0 +1,47 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.sql.ast.statement; + +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLObjectImpl; +import com.alibaba.druid.sql.visitor.SQLASTVisitor; + +public class SQLAlterTableTruncatePartition extends SQLObjectImpl implements SQLAlterTableItem { + + private final List partitions = new ArrayList(4); + + public List getPartitions() { + return partitions; + } + + public void addPartition(SQLName partition) { + if (partition != null) { + partition.setParent(this); + } + this.partitions.add(partition); + } + + @Override + protected void accept0(SQLASTVisitor visitor) { + if (visitor.visit(this)) { + acceptChild(visitor, partitions); + } + visitor.endVisit(this); + } +} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java index 587e6b9137..6ecd0351a1 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java @@ -31,6 +31,7 @@ import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr; import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator; import com.alibaba.druid.sql.ast.expr.SQLCharExpr; +import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr; import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLNCharExpr; @@ -41,10 +42,13 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn; import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex; import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPartition; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableAnalyzePartition; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableCheckPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableCoalescePartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableConvertCharSet; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableDiscardPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropColumnItem; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropForeignKey; @@ -54,8 +58,13 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey; import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableImportPartition; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableOptimizePartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableReOrganizePartition; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableRebuildPartition; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableRepairPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableTruncatePartition; import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement; @@ -2309,6 +2318,18 @@ public class MySqlStatementParser extends SQLStatementParser { for (;;) { if (lexer.token() == Token.DROP) { parseAlterDrop(stmt); + } else if (lexer.token() == Token.TRUNCATE) { + lexer.nextToken(); + accept(Token.PARTITION); + + SQLAlterTableTruncatePartition item = new SQLAlterTableTruncatePartition(); + if (lexer.token() == Token.ALL) { + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + lexer.nextToken(); + } else { + this.exprParser.names(item.getPartitions(), item); + } + stmt.addItem(item); } else if (identifierEquals("ADD")) { lexer.nextToken(); @@ -2359,14 +2380,14 @@ public class MySqlStatementParser extends SQLStatementParser { } } else if (lexer.token() == Token.PARTITION) { lexer.nextToken(); - + SQLAlterTableAddPartition item = new SQLAlterTableAddPartition(); - + if (identifierEquals("PARTITIONS")) { lexer.nextToken(); item.setPartitionCount(this.exprParser.integerExpr()); } - + if (lexer.token() == Token.LPAREN) { lexer.nextToken(); SQLPartition partition = this.getExprParser().parsePartition(); @@ -2374,7 +2395,6 @@ public class MySqlStatementParser extends SQLStatementParser { item.addPartition(partition); } - stmt.addItem(item); } else if (identifierEquals(FULLTEXT)) { throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); @@ -2503,18 +2523,74 @@ public class MySqlStatementParser extends SQLStatementParser { throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); } else if (identifierEquals("DISCARD")) { lexer.nextToken(); - accept(Token.TABLESPACE); - MySqlAlterTableDiscardTablespace item = new MySqlAlterTableDiscardTablespace(); + + if (lexer.token() == Token.PARTITION) { + lexer.nextToken(); + SQLAlterTableDiscardPartition item = new SQLAlterTableDiscardPartition(); + + if (lexer.token() == Token.ALL) { + lexer.nextToken(); + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + } else { + this.exprParser.names(item.getPartitions(), item); + } + + stmt.addItem(item); + } else { + accept(Token.TABLESPACE); + MySqlAlterTableDiscardTablespace item = new MySqlAlterTableDiscardTablespace(); + stmt.addItem(item); + } + } else if (lexer.token() == Token.CHECK) { + lexer.nextToken(); + accept(Token.PARTITION); + + SQLAlterTableCheckPartition item = new SQLAlterTableCheckPartition(); + + if (lexer.token() == Token.ALL) { + lexer.nextToken(); + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + } else { + this.exprParser.names(item.getPartitions(), item); + } + stmt.addItem(item); + } else if (identifierEquals("IMPORT")) { lexer.nextToken(); - accept(Token.TABLESPACE); - MySqlAlterTableImportTablespace item = new MySqlAlterTableImportTablespace(); + + if (lexer.token() == Token.PARTITION) { + lexer.nextToken(); + SQLAlterTableImportPartition item = new SQLAlterTableImportPartition(); + + if (lexer.token() == Token.ALL) { + lexer.nextToken(); + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + } else { + this.exprParser.names(item.getPartitions(), item); + } + + stmt.addItem(item); + } else { + accept(Token.TABLESPACE); + MySqlAlterTableImportTablespace item = new MySqlAlterTableImportTablespace(); + stmt.addItem(item); + } + } else if (lexer.token() == Token.ANALYZE) { + lexer.nextToken(); + accept(Token.PARTITION); + + SQLAlterTableAnalyzePartition item = new SQLAlterTableAnalyzePartition(); + + if (lexer.token() == Token.ALL) { + lexer.nextToken(); + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + } else { + this.exprParser.names(item.getPartitions(), item); + } stmt.addItem(item); } else if (identifierEquals("FORCE")) { throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); - } else if (identifierEquals("TRUNCATE")) { - throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); } else if (identifierEquals("COALESCE")) { lexer.nextToken(); accept(Token.PARTITION); @@ -2549,18 +2625,59 @@ public class MySqlStatementParser extends SQLStatementParser { stmt.addItem(item); } else if (identifierEquals("EXCHANGE")) { throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); - } else if (identifierEquals("ANALYZE")) { - throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); - } else if (identifierEquals("CHECK")) { - throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); } else if (lexer.token() == Token.OPTIMIZE) { - throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); + lexer.nextToken(); + + accept(Token.PARTITION); + + SQLAlterTableOptimizePartition item = new SQLAlterTableOptimizePartition(); + + if (lexer.token() == Token.ALL) { + lexer.nextToken(); + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + } else { + this.exprParser.names(item.getPartitions(), item); + } + + stmt.addItem(item); } else if (identifierEquals("REBUILD")) { - throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); + lexer.nextToken(); + + accept(Token.PARTITION); + + SQLAlterTableRebuildPartition item = new SQLAlterTableRebuildPartition(); + + if (lexer.token() == Token.ALL) { + lexer.nextToken(); + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + } else { + this.exprParser.names(item.getPartitions(), item); + } + + stmt.addItem(item); } else if (identifierEquals("REPAIR")) { - throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); + lexer.nextToken(); + + accept(Token.PARTITION); + + SQLAlterTableRepairPartition item = new SQLAlterTableRepairPartition(); + + if (lexer.token() == Token.ALL) { + lexer.nextToken(); + item.getPartitions().add(new SQLIdentifierExpr("ALL")); + } else { + this.exprParser.names(item.getPartitions(), item); + } + + stmt.addItem(item); } else if (identifierEquals("REMOVE")) { - throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal()); + lexer.nextToken(); + acceptIdentifier("PARTITIONING"); + stmt.setRemovePatiting(true); + } else if (identifierEquals("UPGRADE")) { + lexer.nextToken(); + acceptIdentifier("PARTITIONING"); + stmt.setUpgradePatiting(true); } else if (identifierEquals("ALGORITHM")) { lexer.nextToken(); accept(Token.EQ); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java index c39adb221d..645a100b4b 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java @@ -2413,6 +2413,17 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV println(); item.accept(this); } + + if (x.isRemovePatiting()) { + println(); + print0(ucase ? "REMOVE PARTITIONING" : "remove partitioning"); + } + + if (x.isUpgradePatiting()) { + println(); + print0(ucase ? "UPGRADE PARTITIONING" : "upgrade partitioning"); + } + decrementIndent(); return false; } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index fe83a0d8c4..7c1fc91592 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -80,107 +80,11 @@ import com.alibaba.druid.sql.ast.expr.SQLSomeExpr; import com.alibaba.druid.sql.ast.expr.SQLTimestampExpr; import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr; import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr; -import com.alibaba.druid.sql.ast.statement.NotNullConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableCoalescePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableConvertCharSet; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropColumnItem; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropForeignKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropIndex; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableReOrganizePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenamePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetComment; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableTouch; -import com.alibaba.druid.sql.ast.statement.SQLAlterViewRenameStatement; -import com.alibaba.druid.sql.ast.statement.SQLAssignItem; -import com.alibaba.druid.sql.ast.statement.SQLCallStatement; -import com.alibaba.druid.sql.ast.statement.SQLCharacterDataType; -import com.alibaba.druid.sql.ast.statement.SQLCheck; -import com.alibaba.druid.sql.ast.statement.SQLCloseStatement; -import com.alibaba.druid.sql.ast.statement.SQLColumnCheck; -import com.alibaba.druid.sql.ast.statement.SQLColumnConstraint; -import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; -import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLColumnReference; -import com.alibaba.druid.sql.ast.statement.SQLColumnUniqueKey; -import com.alibaba.druid.sql.ast.statement.SQLCommentStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateIndexStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement; +import com.alibaba.druid.sql.ast.statement.*; import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement.TriggerEvent; import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement.TriggerType; -import com.alibaba.druid.sql.ast.statement.SQLCreateViewStatement; -import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropFunctionStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropIndexStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropProcedureStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropSequenceStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTableSpaceStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTriggerStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropUserStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropViewStatement; -import com.alibaba.druid.sql.ast.statement.SQLExplainStatement; -import com.alibaba.druid.sql.ast.statement.SQLExprHint; -import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; -import com.alibaba.druid.sql.ast.statement.SQLFetchStatement; -import com.alibaba.druid.sql.ast.statement.SQLForeignKeyConstraint; -import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl; -import com.alibaba.druid.sql.ast.statement.SQLGrantStatement; -import com.alibaba.druid.sql.ast.statement.SQLIfStatement; -import com.alibaba.druid.sql.ast.statement.SQLInsertStatement; import com.alibaba.druid.sql.ast.statement.SQLInsertStatement.ValuesClause; -import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource; import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource.JoinType; -import com.alibaba.druid.sql.ast.statement.SQLLoopStatement; -import com.alibaba.druid.sql.ast.statement.SQLOpenStatement; -import com.alibaba.druid.sql.ast.statement.SQLPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLPrimaryKeyImpl; -import com.alibaba.druid.sql.ast.statement.SQLReleaseSavePointStatement; -import com.alibaba.druid.sql.ast.statement.SQLRevokeStatement; -import com.alibaba.druid.sql.ast.statement.SQLRollbackStatement; -import com.alibaba.druid.sql.ast.statement.SQLSavePointStatement; -import com.alibaba.druid.sql.ast.statement.SQLSelect; -import com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause; -import com.alibaba.druid.sql.ast.statement.SQLSelectItem; -import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; -import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; -import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; -import com.alibaba.druid.sql.ast.statement.SQLSetStatement; -import com.alibaba.druid.sql.ast.statement.SQLShowTablesStatement; -import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLTableElement; -import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement; -import com.alibaba.druid.sql.ast.statement.SQLUnionQuery; -import com.alibaba.druid.sql.ast.statement.SQLUnionQueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLUnique; -import com.alibaba.druid.sql.ast.statement.SQLUniqueConstraint; -import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem; -import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement; -import com.alibaba.druid.sql.ast.statement.SQLUseStatement; -import com.alibaba.druid.sql.ast.statement.SQLWithSubqueryClause; import com.alibaba.druid.util.JdbcConstants; public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements PrintableVisitor { @@ -3059,4 +2963,60 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getCount().accept(this); return false; } + + @Override + public boolean visit(SQLAlterTableTruncatePartition x) { + print0(ucase ? "TRUNCATE PARTITION " : "truncate partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } + + @Override + public boolean visit(SQLAlterTableDiscardPartition x) { + print0(ucase ? "DISCARD PARTITION " : "discard partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } + + @Override + public boolean visit(SQLAlterTableImportPartition x) { + print0(ucase ? "IMPORT PARTITION " : "import partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } + + @Override + public boolean visit(SQLAlterTableAnalyzePartition x) { + print0(ucase ? "ANALYZE PARTITION " : "analyze partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } + + @Override + public boolean visit(SQLAlterTableCheckPartition x) { + print0(ucase ? "CHECK PARTITION " : "check partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } + + @Override + public boolean visit(SQLAlterTableOptimizePartition x) { + print0(ucase ? "OPTIMIZE PARTITION " : "optimize partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } + + @Override + public boolean visit(SQLAlterTableRebuildPartition x) { + print0(ucase ? "REBUILD PARTITION " : "rebuild partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } + + @Override + public boolean visit(SQLAlterTableRepairPartition x) { + print0(ucase ? "REPAIR PARTITION " : "repair partition "); + printlnAndAccept(x.getPartitions(), ","); + return false; + } } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java index 5c49b7ac99..50ae02c9b6 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java @@ -63,99 +63,7 @@ import com.alibaba.druid.sql.ast.expr.SQLSomeExpr; import com.alibaba.druid.sql.ast.expr.SQLTimestampExpr; import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr; import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr; -import com.alibaba.druid.sql.ast.statement.NotNullConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableCoalescePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableConvertCharSet; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropColumnItem; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropForeignKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropIndex; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableReOrganizePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenamePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetComment; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableTouch; -import com.alibaba.druid.sql.ast.statement.SQLAlterViewRenameStatement; -import com.alibaba.druid.sql.ast.statement.SQLAssignItem; -import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; -import com.alibaba.druid.sql.ast.statement.SQLCallStatement; -import com.alibaba.druid.sql.ast.statement.SQLCharacterDataType; -import com.alibaba.druid.sql.ast.statement.SQLCheck; -import com.alibaba.druid.sql.ast.statement.SQLCloseStatement; -import com.alibaba.druid.sql.ast.statement.SQLColumnCheck; -import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; -import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLColumnReference; -import com.alibaba.druid.sql.ast.statement.SQLColumnUniqueKey; -import com.alibaba.druid.sql.ast.statement.SQLCommentStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateIndexStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateViewStatement; -import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropFunctionStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropIndexStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropProcedureStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropSequenceStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTableSpaceStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTriggerStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropUserStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropViewStatement; -import com.alibaba.druid.sql.ast.statement.SQLExplainStatement; -import com.alibaba.druid.sql.ast.statement.SQLExprHint; -import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; -import com.alibaba.druid.sql.ast.statement.SQLFetchStatement; -import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl; -import com.alibaba.druid.sql.ast.statement.SQLGrantStatement; -import com.alibaba.druid.sql.ast.statement.SQLIfStatement; -import com.alibaba.druid.sql.ast.statement.SQLInsertStatement; -import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource; -import com.alibaba.druid.sql.ast.statement.SQLLoopStatement; -import com.alibaba.druid.sql.ast.statement.SQLOpenStatement; -import com.alibaba.druid.sql.ast.statement.SQLPrimaryKeyImpl; -import com.alibaba.druid.sql.ast.statement.SQLReleaseSavePointStatement; -import com.alibaba.druid.sql.ast.statement.SQLRevokeStatement; -import com.alibaba.druid.sql.ast.statement.SQLRollbackStatement; -import com.alibaba.druid.sql.ast.statement.SQLSavePointStatement; -import com.alibaba.druid.sql.ast.statement.SQLSelect; -import com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause; -import com.alibaba.druid.sql.ast.statement.SQLSelectItem; -import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; -import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; -import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; -import com.alibaba.druid.sql.ast.statement.SQLSetStatement; -import com.alibaba.druid.sql.ast.statement.SQLShowTablesStatement; -import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement; -import com.alibaba.druid.sql.ast.statement.SQLUnionQuery; -import com.alibaba.druid.sql.ast.statement.SQLUnionQueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLUnique; -import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem; -import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement; -import com.alibaba.druid.sql.ast.statement.SQLUseStatement; -import com.alibaba.druid.sql.ast.statement.SQLWithSubqueryClause; +import com.alibaba.druid.sql.ast.statement.*; public interface SQLASTVisitor { @@ -750,4 +658,36 @@ public interface SQLASTVisitor { boolean visit(SQLAlterTableCoalescePartition x); void endVisit(SQLAlterTableCoalescePartition x); + + boolean visit(SQLAlterTableTruncatePartition x); + + void endVisit(SQLAlterTableTruncatePartition x); + + boolean visit(SQLAlterTableDiscardPartition x); + + void endVisit(SQLAlterTableDiscardPartition x); + + boolean visit(SQLAlterTableImportPartition x); + + void endVisit(SQLAlterTableImportPartition x); + + boolean visit(SQLAlterTableAnalyzePartition x); + + void endVisit(SQLAlterTableAnalyzePartition x); + + boolean visit(SQLAlterTableCheckPartition x); + + void endVisit(SQLAlterTableCheckPartition x); + + boolean visit(SQLAlterTableOptimizePartition x); + + void endVisit(SQLAlterTableOptimizePartition x); + + boolean visit(SQLAlterTableRebuildPartition x); + + void endVisit(SQLAlterTableRebuildPartition x); + + boolean visit(SQLAlterTableRepairPartition x); + + void endVisit(SQLAlterTableRepairPartition x); } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java index 4317a659d8..b2f35ce855 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java @@ -64,100 +64,8 @@ import com.alibaba.druid.sql.ast.expr.SQLSomeExpr; import com.alibaba.druid.sql.ast.expr.SQLTimestampExpr; import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr; import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr; -import com.alibaba.druid.sql.ast.statement.NotNullConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableCoalescePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableConvertCharSet; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropColumnItem; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropForeignKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropIndex; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableReOrganizePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenamePartition; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetComment; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableSetLifecycle; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLAlterTableTouch; -import com.alibaba.druid.sql.ast.statement.SQLAlterViewRenameStatement; -import com.alibaba.druid.sql.ast.statement.SQLAssignItem; -import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; -import com.alibaba.druid.sql.ast.statement.SQLCallStatement; -import com.alibaba.druid.sql.ast.statement.SQLCharacterDataType; -import com.alibaba.druid.sql.ast.statement.SQLCheck; -import com.alibaba.druid.sql.ast.statement.SQLCloseStatement; -import com.alibaba.druid.sql.ast.statement.SQLColumnCheck; -import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; -import com.alibaba.druid.sql.ast.statement.SQLColumnPrimaryKey; -import com.alibaba.druid.sql.ast.statement.SQLColumnReference; -import com.alibaba.druid.sql.ast.statement.SQLColumnUniqueKey; -import com.alibaba.druid.sql.ast.statement.SQLCommentStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateIndexStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateViewStatement; -import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropDatabaseStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropFunctionStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropIndexStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropProcedureStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropSequenceStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTableSpaceStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTableStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropTriggerStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropUserStatement; -import com.alibaba.druid.sql.ast.statement.SQLDropViewStatement; -import com.alibaba.druid.sql.ast.statement.SQLExplainStatement; -import com.alibaba.druid.sql.ast.statement.SQLExprHint; -import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; -import com.alibaba.druid.sql.ast.statement.SQLFetchStatement; -import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl; -import com.alibaba.druid.sql.ast.statement.SQLGrantStatement; -import com.alibaba.druid.sql.ast.statement.SQLIfStatement; -import com.alibaba.druid.sql.ast.statement.SQLInsertStatement; +import com.alibaba.druid.sql.ast.statement.*; import com.alibaba.druid.sql.ast.statement.SQLInsertStatement.ValuesClause; -import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource; -import com.alibaba.druid.sql.ast.statement.SQLLoopStatement; -import com.alibaba.druid.sql.ast.statement.SQLOpenStatement; -import com.alibaba.druid.sql.ast.statement.SQLPrimaryKeyImpl; -import com.alibaba.druid.sql.ast.statement.SQLReleaseSavePointStatement; -import com.alibaba.druid.sql.ast.statement.SQLRevokeStatement; -import com.alibaba.druid.sql.ast.statement.SQLRollbackStatement; -import com.alibaba.druid.sql.ast.statement.SQLSavePointStatement; -import com.alibaba.druid.sql.ast.statement.SQLSelect; -import com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause; -import com.alibaba.druid.sql.ast.statement.SQLSelectItem; -import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; -import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; -import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; -import com.alibaba.druid.sql.ast.statement.SQLSetStatement; -import com.alibaba.druid.sql.ast.statement.SQLShowTablesStatement; -import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement; -import com.alibaba.druid.sql.ast.statement.SQLUnionQuery; -import com.alibaba.druid.sql.ast.statement.SQLUnionQueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLUnique; -import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem; -import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement; -import com.alibaba.druid.sql.ast.statement.SQLUseStatement; -import com.alibaba.druid.sql.ast.statement.SQLWithSubqueryClause; public class SQLASTVisitorAdapter implements SQLASTVisitor { @@ -376,11 +284,11 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { public void endVisit(SQLColumnDefinition x) { } - + public boolean visit(SQLColumnDefinition.Identity x) { return true; } - + public void endVisit(SQLColumnDefinition.Identity x) { } @@ -432,11 +340,11 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { public void endVisit(SQLCreateViewStatement x) { } - + public boolean visit(SQLCreateViewStatement.Column x) { return true; } - + public void endVisit(SQLCreateViewStatement.Column x) { } @@ -1055,242 +963,242 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { public boolean visit(SQLAlterTableAddConstraint x) { return true; } - + @Override public void endVisit(SQLCreateTriggerStatement x) { - + } - + @Override public boolean visit(SQLCreateTriggerStatement x) { return true; } - + @Override public void endVisit(SQLDropFunctionStatement x) { - + } - + @Override public boolean visit(SQLDropFunctionStatement x) { return true; } - + @Override public void endVisit(SQLDropTableSpaceStatement x) { - + } - + @Override public boolean visit(SQLDropTableSpaceStatement x) { return true; } - + @Override public void endVisit(SQLDropProcedureStatement x) { - + } - + @Override public boolean visit(SQLDropProcedureStatement x) { return true; } - + @Override public void endVisit(SQLBooleanExpr x) { - + } - + @Override public boolean visit(SQLBooleanExpr x) { return true; } - + @Override public void endVisit(SQLUnionQueryTableSource x) { - + } @Override public boolean visit(SQLUnionQueryTableSource x) { return true; } - + @Override public void endVisit(SQLTimestampExpr x) { - + } - + @Override public boolean visit(SQLTimestampExpr x) { return true; } - + @Override public void endVisit(SQLRevokeStatement x) { - + } - + @Override public boolean visit(SQLRevokeStatement x) { return true; } - + @Override public void endVisit(SQLBinaryExpr x) { - + } - + @Override public boolean visit(SQLBinaryExpr x) { return true; } - + @Override public void endVisit(SQLAlterTableRename x) { - + } - + @Override public boolean visit(SQLAlterTableRename x) { return true; } - + @Override public void endVisit(SQLAlterViewRenameStatement x) { - + } - + @Override public boolean visit(SQLAlterViewRenameStatement x) { return true; } - + @Override public void endVisit(SQLShowTablesStatement x) { - + } - + @Override public boolean visit(SQLShowTablesStatement x) { return true; } - + @Override public void endVisit(SQLAlterTableAddPartition x) { - + } - + @Override public boolean visit(SQLAlterTableAddPartition x) { return true; } - + @Override public void endVisit(SQLAlterTableDropPartition x) { - + } - + @Override public boolean visit(SQLAlterTableDropPartition x) { return true; } - + @Override public void endVisit(SQLAlterTableRenamePartition x) { - + } - + @Override public boolean visit(SQLAlterTableRenamePartition x) { return true; } - + @Override public void endVisit(SQLAlterTableSetComment x) { - + } - + @Override public boolean visit(SQLAlterTableSetComment x) { return true; } - + @Override public void endVisit(SQLAlterTableSetLifecycle x) { - + } - + @Override public boolean visit(SQLAlterTableSetLifecycle x) { return true; } - + @Override public void endVisit(SQLAlterTableEnableLifecycle x) { - + } - + @Override public boolean visit(SQLAlterTableEnableLifecycle x) { return true; } - + @Override public void endVisit(SQLAlterTableDisableLifecycle x) { - + } - + @Override public boolean visit(SQLAlterTableDisableLifecycle x) { return true; } - + @Override public void endVisit(SQLAlterTableTouch x) { - + } - + @Override public boolean visit(SQLAlterTableTouch x) { return true; } - + @Override public void endVisit(SQLArrayExpr x) { - + } - + @Override public boolean visit(SQLArrayExpr x) { return true; } - + @Override public void endVisit(SQLOpenStatement x) { - + } - + @Override public boolean visit(SQLOpenStatement x) { return true; } - + @Override public void endVisit(SQLFetchStatement x) { - + } - + @Override public boolean visit(SQLFetchStatement x) { return true; } - + @Override public void endVisit(SQLCloseStatement x) { - + } - + @Override public boolean visit(SQLCloseStatement x) { return true; @@ -1303,7 +1211,7 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLGroupingSetExpr x) { - + } @Override @@ -1313,7 +1221,7 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLIfStatement x) { - + } @Override @@ -1323,17 +1231,17 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLIfStatement.Else x) { - + } - + @Override public boolean visit(SQLIfStatement.ElseIf x) { return true; } - + @Override public void endVisit(SQLIfStatement.ElseIf x) { - + } @Override @@ -1343,7 +1251,7 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLLoopStatement x) { - + } @Override @@ -1353,7 +1261,7 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLParameter x) { - + } @Override @@ -1363,7 +1271,7 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLCreateProcedureStatement x) { - + } @Override @@ -1373,7 +1281,7 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLBlockStatement x) { - + } @Override @@ -1383,7 +1291,7 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLAlterTableDropKey x) { - + } @Override @@ -1399,80 +1307,80 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { public boolean visit(SQLPartitionValue x) { return true; } - + @Override public void endVisit(SQLPartitionValue x) { - + } - + @Override public boolean visit(SQLPartition x) { return true; } - + @Override public void endVisit(SQLPartition x) { - + } - + @Override public boolean visit(SQLPartitionByRange x) { return true; } - + @Override public void endVisit(SQLPartitionByRange x) { - + } - + @Override public boolean visit(SQLPartitionByHash x) { return true; } - + @Override public void endVisit(SQLPartitionByHash x) { - + } - + @Override public boolean visit(SQLPartitionByList x) { return true; } - + @Override public void endVisit(SQLPartitionByList x) { - + } - + @Override public boolean visit(SQLSubPartition x) { return true; } - + @Override public void endVisit(SQLSubPartition x) { - + } - + @Override public boolean visit(SQLSubPartitionByHash x) { return true; } - + @Override public void endVisit(SQLSubPartitionByHash x) { - + } - + @Override public boolean visit(SQLSubPartitionByList x) { return true; } - + @Override public void endVisit(SQLSubPartitionByList x) { - + } @Override @@ -1482,37 +1390,117 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { @Override public void endVisit(SQLAlterDatabaseStatement x) { - + } - + @Override public boolean visit(SQLAlterTableConvertCharSet x) { return true; } - + @Override public void endVisit(SQLAlterTableConvertCharSet x) { - + } - + @Override public boolean visit(SQLAlterTableReOrganizePartition x) { return true; } - + @Override public void endVisit(SQLAlterTableReOrganizePartition x) { - + } - + @Override public boolean visit(SQLAlterTableCoalescePartition x) { return true; } - + @Override public void endVisit(SQLAlterTableCoalescePartition x) { - + + } + + @Override + public boolean visit(SQLAlterTableTruncatePartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableTruncatePartition x) { + + } + + @Override + public boolean visit(SQLAlterTableDiscardPartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableDiscardPartition x) { + + } + + @Override + public boolean visit(SQLAlterTableImportPartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableImportPartition x) { + + } + + @Override + public boolean visit(SQLAlterTableAnalyzePartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableAnalyzePartition x) { + + } + + @Override + public boolean visit(SQLAlterTableCheckPartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableCheckPartition x) { + + } + + @Override + public boolean visit(SQLAlterTableOptimizePartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableOptimizePartition x) { + + } + + @Override + public boolean visit(SQLAlterTableRebuildPartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableRebuildPartition x) { + + } + + @Override + public boolean visit(SQLAlterTableRepairPartition x) { + return true; + } + + @Override + public void endVisit(SQLAlterTableRepairPartition x) { + } } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java index 489e72bddc..e245fc804b 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SchemaStatVisitor.java @@ -51,17 +51,25 @@ import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.ast.statement.SQLAlterDatabaseStatement; import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn; import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableAnalyzePartition; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableCheckPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableCoalescePartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableConvertCharSet; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableDiscardPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropForeignKey; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableImportPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableOptimizePartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableReOrganizePartition; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableRebuildPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableRepairPartition; import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableTruncatePartition; import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLCallStatement; import com.alibaba.druid.sql.ast.statement.SQLCheck; @@ -1532,4 +1540,44 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter { public boolean visit(SQLAlterTableCoalescePartition x) { return false; } + + @Override + public boolean visit(SQLAlterTableTruncatePartition x) { + return false; + } + + @Override + public boolean visit(SQLAlterTableDiscardPartition x) { + return false; + } + + @Override + public boolean visit(SQLAlterTableImportPartition x) { + return false; + } + + @Override + public boolean visit(SQLAlterTableAnalyzePartition x) { + return false; + } + + @Override + public boolean visit(SQLAlterTableCheckPartition x) { + return false; + } + + @Override + public boolean visit(SQLAlterTableOptimizePartition x) { + return false; + } + + @Override + public boolean visit(SQLAlterTableRebuildPartition x) { + return false; + } + + @Override + public boolean visit(SQLAlterTableRepairPartition x) { + return false; + } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableAnalyzePartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableAnalyzePartitionTest.java new file mode 100644 index 0000000000..c90163fa94 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableAnalyzePartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableAnalyzePartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange ANALYZE PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tANALYZE PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableAnalyzePartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableAnalyzePartitionTest2.java new file mode 100644 index 0000000000..cb044449d8 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableAnalyzePartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableAnalyzePartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange ANALYZE PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tANALYZE PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableCheckPartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableCheckPartitionTest.java new file mode 100644 index 0000000000..cf8f516f95 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableCheckPartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableCheckPartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange CHECK PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tCHECK PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableCheckPartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableCheckPartitionTest2.java new file mode 100644 index 0000000000..5be4b1ad35 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableCheckPartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableCheckPartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange CHECK PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tCHECK PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableDiscardPartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableDiscardPartitionTest.java new file mode 100644 index 0000000000..5487bcdd97 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableDiscardPartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableDiscardPartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange DISCARD PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tDISCARD PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableDiscardPartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableDiscardPartitionTest2.java new file mode 100644 index 0000000000..348f106185 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableDiscardPartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableDiscardPartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange DISCARD PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tDISCARD PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableImportPartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableImportPartitionTest.java new file mode 100644 index 0000000000..7b888619cc --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableImportPartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableImportPartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange IMPORT PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tIMPORT PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableImportPartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableImportPartitionTest2.java new file mode 100644 index 0000000000..72db9853ee --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableImportPartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableImportPartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange IMPORT PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tIMPORT PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableOptimizePartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableOptimizePartitionTest.java new file mode 100644 index 0000000000..50c57b2665 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableOptimizePartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableOptimizePartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange OPTIMIZE PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tOPTIMIZE PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableOptimizePartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableOptimizePartitionTest2.java new file mode 100644 index 0000000000..4163836b8f --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableOptimizePartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableOptimizePartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange OPTIMIZE PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tOPTIMIZE PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRebuildPartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRebuildPartitionTest.java new file mode 100644 index 0000000000..ec13513ac0 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRebuildPartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableRebuildPartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange REBUILD PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tREBUILD PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRebuildPartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRebuildPartitionTest2.java new file mode 100644 index 0000000000..6b83f890e1 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRebuildPartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableRebuildPartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange REBUILD PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tREBUILD PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRemovePartitioningTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRemovePartitioningTest.java new file mode 100644 index 0000000000..6e7a047f2f --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRemovePartitioningTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableRemovePartitioningTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange REMOVE PARTITIONING;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tREMOVE PARTITIONING", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRepairPartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRepairPartitionTest.java new file mode 100644 index 0000000000..44f06fd0ab --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRepairPartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableRepairPartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange REPAIR PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tREPAIR PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRepairPartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRepairPartitionTest2.java new file mode 100644 index 0000000000..5f54e28c35 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableRepairPartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableRepairPartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange REPAIR PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tREPAIR PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableTruncatePartitionTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableTruncatePartitionTest.java new file mode 100644 index 0000000000..3407df2b67 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableTruncatePartitionTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableTruncatePartitionTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange TRUNCATE PARTITION p1;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tTRUNCATE PARTITION p1", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableTruncatePartitionTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableTruncatePartitionTest2.java new file mode 100644 index 0000000000..6613bf2fa6 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableTruncatePartitionTest2.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableTruncatePartitionTest2 extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange TRUNCATE PARTITION ALL;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tTRUNCATE PARTITION ALL", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableUpgradePartitioningTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableUpgradePartitioningTest.java new file mode 100644 index 0000000000..758a4fa2e0 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oceanbase/OceanbaseAlterTableUpgradePartitioningTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2101 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.bvt.sql.oceanbase; + +import java.util.List; + +import org.junit.Assert; + +import com.alibaba.druid.sql.MysqlTest; +import com.alibaba.druid.sql.SQLUtils; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; +import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; + +public class OceanbaseAlterTableUpgradePartitioningTest extends MysqlTest { + + public void test_0() throws Exception { + String sql = "ALTER TABLE tnrange UPGRADE PARTITIONING;"; // + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List stmtList = parser.parseStatementList(); + SQLStatement stmt = stmtList.get(0); + + String result = SQLUtils.toMySqlString(stmt); + Assert.assertEquals("ALTER TABLE tnrange" + + "\n\tUPGRADE PARTITIONING", + result); + print(stmtList); + + Assert.assertEquals(1, stmtList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + stmt.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(0, visitor.getColumns().size()); + Assert.assertEquals(0, visitor.getConditions().size()); + + // Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store"))); + + } +}