From fa265636f0427438e41827eae6b98d837614d64c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Sun, 10 Jan 2016 16:12:17 +0800 Subject: [PATCH] remove OracleOrderByItem --- .../ast/statement/SQLSelectGroupByClause.java | 22 +++++-- .../ast/statement/SQLSelectOrderByItem.java | 2 +- .../sql/dialect/oracle/ast/OracleOrderBy.java | 5 +- .../oracle/ast/clause/SearchClause.java | 6 +- .../stmt/OracleAlterTableAddConstaint.java | 41 ------------- .../oracle/ast/stmt/OracleOrderByItem.java | 59 ------------------- .../oracle/parser/OracleExprParser.java | 10 ++-- .../oracle/parser/OracleSelectParser.java | 5 +- .../oracle/parser/OracleStatementParser.java | 12 ++-- .../oracle/visitor/OracleASTVisitor.java | 10 ---- .../visitor/OracleASTVisitorAdapter.java | 23 -------- .../oracle/visitor/OracleOutputVisitor.java | 28 ++------- .../visitor/OracleSchemaStatVisitor.java | 24 -------- .../druid/sql/parser/SQLSelectParser.java | 4 +- .../sql/visitor/SQLASTOutputVisitor.java | 12 +++- .../visitor/OracleASTVisitorAdapterTest.java | 4 +- 16 files changed, 53 insertions(+), 214 deletions(-) delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTableAddConstaint.java delete mode 100644 src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleOrderByItem.java diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectGroupByClause.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectGroupByClause.java index 887d7cc590..d194fe6599 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectGroupByClause.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectGroupByClause.java @@ -26,7 +26,8 @@ public class SQLSelectGroupByClause extends SQLObjectImpl { private final List items = new ArrayList(); private SQLExpr having; - private boolean rollUp = false; + private boolean withRollUp = false; + private boolean withCube = false; public SQLSelectGroupByClause(){ @@ -41,13 +42,22 @@ public class SQLSelectGroupByClause extends SQLObjectImpl { visitor.endVisit(this); } - public boolean isRollUp() { - return rollUp; + public boolean isWithRollUp() { + return withRollUp; } - public void setRollUp(boolean rollUp) { - this.rollUp = rollUp; - } + public void setWithRollUp(boolean withRollUp) { + this.withRollUp = withRollUp; + } + + + public boolean isWithCube() { + return withCube; + } + + public void setWithCube(boolean withCube) { + this.withCube = withCube; + } public SQLExpr getHaving() { return this.having; diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectOrderByItem.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectOrderByItem.java index f241cf6432..a0b9584114 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectOrderByItem.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLSelectOrderByItem.java @@ -25,7 +25,7 @@ public class SQLSelectOrderByItem extends SQLObjectImpl { protected SQLExpr expr; protected String collate; protected SQLOrderingSpecification type; - protected NullsOrderType nullsOrderType; + protected NullsOrderType nullsOrderType; public SQLSelectOrderByItem(){ diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleOrderBy.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleOrderBy.java index e6523bb15d..a897a74136 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleOrderBy.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/OracleOrderBy.java @@ -17,7 +17,6 @@ package com.alibaba.druid.sql.dialect.oracle.ast; import com.alibaba.druid.sql.ast.SQLOrderBy; import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; @@ -65,11 +64,11 @@ public class OracleOrderBy extends SQLOrderBy { if (i != 0) { buf.append(", "); } - ((OracleOrderByItem) this.items.get(i)).output(buf); + ((SQLSelectOrderByItem) this.items.get(i)).output(buf); } } protected SQLSelectOrderByItem createItem() { - return new OracleOrderByItem(); + return new SQLSelectOrderByItem(); } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java index fa506b9131..2b62b67b01 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/SearchClause.java @@ -19,8 +19,8 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; +import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; public class SearchClause extends OracleSQLObjectImpl { @@ -31,7 +31,7 @@ public class SearchClause extends OracleSQLObjectImpl { private Type type; - private final List items = new ArrayList(); + private final List items = new ArrayList(); private SQLIdentifierExpr orderingColumn; @@ -43,7 +43,7 @@ public class SearchClause extends OracleSQLObjectImpl { this.type = type; } - public List getItems() { + public List getItems() { return items; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTableAddConstaint.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTableAddConstaint.java deleted file mode 100644 index 34e7e3a663..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleAlterTableAddConstaint.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.dialect.oracle.ast.stmt; - -import com.alibaba.druid.sql.ast.statement.SQLConstraint; -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; - -public class OracleAlterTableAddConstaint extends OracleAlterTableItem { - - private SQLConstraint constraint; - - @Override - public void accept0(OracleASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, constraint); - } - visitor.endVisit(this); - } - - public SQLConstraint getConstraint() { - return constraint; - } - - public void setConstraint(SQLConstraint constraint) { - this.constraint = constraint; - } - -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleOrderByItem.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleOrderByItem.java deleted file mode 100644 index 38d31063e2..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleOrderByItem.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * 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.dialect.oracle.ast.stmt; - -import com.alibaba.druid.sql.ast.SQLOrderingSpecification; -import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; -import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor; -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class OracleOrderByItem extends SQLSelectOrderByItem { - - public OracleOrderByItem(){ - - } - - protected void accept0(SQLASTVisitor visitor) { - if (visitor instanceof OracleASTVisitor) { - accept0((OracleASTVisitor) visitor); - } else { - super.accept0(visitor); - } - } - - protected void accept0(OracleASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, this.expr); - } - - visitor.endVisit(this); - } - - public void output(StringBuffer buf) { - this.expr.output(buf); - if (SQLOrderingSpecification.ASC.equals(this.type)) { - buf.append(" ASC"); - } else if (SQLOrderingSpecification.DESC.equals(this.type)) { - buf.append(" DESC"); - } - if (NullsOrderType.NullsFirst.equals(this.nullsOrderType)) { - buf.append(" NULLS FIRST"); - } else if (NullsOrderType.NullsLast.equals(this.nullsOrderType)) { - buf.append(" NULLS LAST"); - } - } - -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java index 6fa6ea17e9..5d0d09a28f 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java @@ -42,6 +42,7 @@ import com.alibaba.druid.sql.ast.statement.SQLCharacterDataType; import com.alibaba.druid.sql.ast.statement.SQLCheck; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLForeignKeyConstraint; +import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; import com.alibaba.druid.sql.ast.statement.SQLUnique; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalDay; import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeIntervalYear; @@ -72,7 +73,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCheck; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleConstraint; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleConstraint.Initially; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleForeignKey; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePrimaryKey; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelect; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleUnique; @@ -877,8 +877,8 @@ public class OracleExprParser extends SQLExprParser { } @Override - public OracleOrderByItem parseSelectOrderByItem() { - OracleOrderByItem item = new OracleOrderByItem(); + public SQLSelectOrderByItem parseSelectOrderByItem() { + SQLSelectOrderByItem item = new SQLSelectOrderByItem(); item.setExpr(expr()); @@ -894,10 +894,10 @@ public class OracleExprParser extends SQLExprParser { lexer.nextToken(); if (identifierEquals("FIRST")) { lexer.nextToken(); - item.setNullsOrderType(OracleOrderByItem.NullsOrderType.NullsFirst); + item.setNullsOrderType(SQLSelectOrderByItem.NullsOrderType.NullsFirst); } else if (identifierEquals("LAST")) { lexer.nextToken(); - item.setNullsOrderType(OracleOrderByItem.NullsOrderType.NullsLast); + item.setNullsOrderType(SQLSelectOrderByItem.NullsOrderType.NullsLast); } else { throw new ParserException("TODO " + lexer.token()); } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java index c7dd61fcb5..ded1599dd5 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java @@ -51,7 +51,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleWithSubqueryEntry; import com.alibaba.druid.sql.dialect.oracle.ast.clause.PartitionExtensionClause; import com.alibaba.druid.sql.dialect.oracle.ast.clause.SampleClause; import com.alibaba.druid.sql.dialect.oracle.ast.clause.SearchClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelect; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectForUpdate; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectHierachicalQueryClause; @@ -188,11 +187,11 @@ public class OracleSelectParser extends SQLSelectParser { acceptIdentifier("FIRST"); accept(Token.BY); - searchClause.getItems().add((OracleOrderByItem) exprParser.parseSelectOrderByItem()); + searchClause.getItems().add(exprParser.parseSelectOrderByItem()); while (lexer.token() == (Token.COMMA)) { lexer.nextToken(); - searchClause.getItems().add((OracleOrderByItem) exprParser.parseSelectOrderByItem()); + searchClause.getItems().add(exprParser.parseSelectOrderByItem()); } accept(Token.SET); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java index 9ae67da705..bbd2404308 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java @@ -18,33 +18,34 @@ package com.alibaba.druid.sql.dialect.oracle.parser; import java.util.ArrayList; import java.util.List; -import com.alibaba.druid.sql.ast.SQLParameter; import com.alibaba.druid.sql.ast.SQLDataTypeImpl; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLHint; import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.SQLParameter; 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.SQLNullExpr; import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; -import com.alibaba.druid.sql.ast.statement.SQLLoopStatement; -import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement; -import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn; +import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropColumnItem; import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint; import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement; +import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; +import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement; import com.alibaba.druid.sql.ast.statement.SQLDropSequenceStatement; 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.SQLIfStatement; import com.alibaba.druid.sql.ast.statement.SQLInsertInto; +import com.alibaba.druid.sql.ast.statement.SQLLoopStatement; import com.alibaba.druid.sql.ast.statement.SQLRollbackStatement; import com.alibaba.druid.sql.ast.statement.SQLSelect; import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; @@ -59,7 +60,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstaint; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace; @@ -794,7 +794,7 @@ public class OracleStatementParser extends SQLStatementParser { accept(Token.RPAREN); } else if (lexer.token() == Token.CONSTRAINT) { OracleConstraint constraint = ((OracleExprParser) this.exprParser).parseConstaint(); - OracleAlterTableAddConstaint item = new OracleAlterTableAddConstaint(); + SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(); constraint.setParent(item); item.setParent(stmt); item.setConstraint(constraint); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java index 783f37b74d..5ebedba7a9 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitor.java @@ -54,7 +54,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstaint; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace; @@ -89,7 +88,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClauseItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.InsertIntoClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePLSQLCommitStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePrimaryKey; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSavePointStatement; @@ -137,8 +135,6 @@ public interface OracleASTVisitor extends SQLASTVisitor { void endVisit(OracleSelectJoin x); - void endVisit(OracleOrderByItem x); - void endVisit(OracleSelectPivot x); void endVisit(OracleSelectPivot.Item x); @@ -179,8 +175,6 @@ public interface OracleASTVisitor extends SQLASTVisitor { boolean visit(OracleSelectJoin x); - boolean visit(OracleOrderByItem x); - boolean visit(OracleSelectPivot x); boolean visit(OracleSelectPivot.Item x); @@ -419,10 +413,6 @@ public interface OracleASTVisitor extends SQLASTVisitor { void endVisit(OracleAlterIndexStatement x); - boolean visit(OracleAlterTableAddConstaint x); - - void endVisit(OracleAlterTableAddConstaint x); - boolean visit(OraclePrimaryKey x); void endVisit(OraclePrimaryKey x); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java index aac2388ff6..aa56338a5a 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleASTVisitorAdapter.java @@ -62,7 +62,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstaint; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace; @@ -99,7 +98,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClauseItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.InsertIntoClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePLSQLCommitStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePrimaryKey; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSavePointStatement; @@ -195,11 +193,6 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora } - @Override - public void endVisit(OracleOrderByItem x) { - - } - @Override public void endVisit(OracleSelectPivot x) { @@ -313,12 +306,6 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora return true; } - @Override - public boolean visit(OracleOrderByItem x) { - - return true; - } - @Override public boolean visit(OracleSelectPivot x) { @@ -930,16 +917,6 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora } - @Override - public boolean visit(OracleAlterTableAddConstaint x) { - return true; - } - - @Override - public void endVisit(OracleAlterTableAddConstaint x) { - - } - @Override public boolean visit(OraclePrimaryKey x) { return true; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index 4765466b51..f80c0ad260 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -17,10 +17,10 @@ package com.alibaba.druid.sql.dialect.oracle.visitor; import java.util.List; -import com.alibaba.druid.sql.ast.SQLParameter; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLHint; import com.alibaba.druid.sql.ast.SQLObject; +import com.alibaba.druid.sql.ast.SQLParameter; import com.alibaba.druid.sql.ast.SQLSetQuantifier; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr; @@ -29,12 +29,12 @@ import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; -import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement; -import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem; +import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLCharacterDataType; import com.alibaba.druid.sql.ast.statement.SQLCheck; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; +import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl; import com.alibaba.druid.sql.ast.statement.SQLIfStatement; @@ -42,6 +42,7 @@ import com.alibaba.druid.sql.ast.statement.SQLInsertStatement; import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource.JoinType; import com.alibaba.druid.sql.ast.statement.SQLRollbackStatement; import com.alibaba.druid.sql.ast.statement.SQLSelect; +import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement; import com.alibaba.druid.sql.ast.statement.SQLUnique; @@ -96,7 +97,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement.R import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstaint; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace; @@ -137,7 +137,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClauseItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.InsertIntoClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePLSQLCommitStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePrimaryKey; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSavePointStatement; @@ -494,7 +493,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS return false; } - public boolean visit(OracleOrderByItem x) { + public boolean visit(SQLSelectOrderByItem x) { x.getExpr().accept(this); if (x.getType() != null) { print(' '); @@ -854,11 +853,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } - @Override - public void endVisit(OracleOrderByItem x) { - - } - @Override public void endVisit(OracleSelectPivot x) { @@ -2277,18 +2271,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getDefaultExpr().accept(this); } - @Override - public boolean visit(OracleAlterTableAddConstaint x) { - print0(ucase ? "ADD " : "add "); - x.getConstraint().accept(this); - return false; - } - - @Override - public void endVisit(OracleAlterTableAddConstaint x) { - - } - @Override public boolean visit(OraclePrimaryKey x) { if (x.getName() != null) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java index 7c382db225..252962f9ee 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleSchemaStatVisitor.java @@ -85,7 +85,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstaint; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace; @@ -122,7 +121,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClause; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.ConditionalInsertClauseItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleMultiInsertStatement.InsertIntoClause; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleOrderByItem; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePLSQLCommitStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OraclePrimaryKey; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSavePointStatement; @@ -423,11 +421,6 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle } - @Override - public void endVisit(OracleOrderByItem x) { - - } - @Override public void endVisit(OracleSelectPivot x) { @@ -565,12 +558,6 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle return false; } - @Override - public boolean visit(OracleOrderByItem x) { - - return true; - } - @Override public boolean visit(OracleSelectPivot x) { @@ -1315,17 +1302,6 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle } - @Override - public boolean visit(OracleAlterTableAddConstaint x) { - x.getConstraint().accept(this); - return false; - } - - @Override - public void endVisit(OracleAlterTableAddConstaint x) { - - } - @Override public boolean visit(OraclePrimaryKey x) { accept(x.getColumns()); diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java index 4a760526f1..3d43fdc4a9 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java @@ -288,7 +288,7 @@ public class SQLSelectParser extends SQLParser { lexer.nextToken(); acceptIdentifier("ROLLUP"); - groupBy.setRollUp(true); + groupBy.setWithRollUp(true); } if(JdbcConstants.MYSQL.equals(getDbType()) && lexer.token() == Token.DESC) { @@ -324,7 +324,7 @@ public class SQLSelectParser extends SQLParser { lexer.nextToken(); acceptIdentifier("ROLLUP"); - groupBy.setRollUp(true); + groupBy.setWithRollUp(true); } if(JdbcConstants.MYSQL.equals(getDbType()) && lexer.token() == Token.DESC) { 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 5986786f43..62a7405e4e 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -744,7 +744,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab incrementIndent(); for (int i = 0; i < itemSize; ++i) { if (i != 0) { - println(", "); + if (groupItemSingleLine) { + println(", "); + } else { + print(", "); + } } x.getItems().get(i).accept(this); } @@ -757,10 +761,14 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getHaving().accept(this); } - if (x.isRollUp()) { + if (x.isWithRollUp()) { print0(ucase ? " WITH ROLLUP" : " with rollup"); } + if (x.isWithCube()) { + print0(ucase ? " WITH CUBE" : " with cube"); + } + return false; } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/visitor/OracleASTVisitorAdapterTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/visitor/OracleASTVisitorAdapterTest.java index 9ac15b7792..1ba0be7ecd 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/visitor/OracleASTVisitorAdapterTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/visitor/OracleASTVisitorAdapterTest.java @@ -3,8 +3,8 @@ package com.alibaba.druid.bvt.sql.oracle.visitor; import com.alibaba.druid.sql.ast.SQLParameter; import com.alibaba.druid.sql.ast.expr.SQLGroupingSetExpr; import com.alibaba.druid.sql.ast.expr.SQLTimestampExpr; -import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename; +import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLCreateProcedureStatement; import com.alibaba.druid.sql.ast.statement.SQLDropSequenceStatement; import com.alibaba.druid.sql.ast.statement.SQLFetchStatement; @@ -52,7 +52,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterIndexStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterProcedureStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSessionStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterSynonymStatement; -import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstaint; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace; @@ -201,7 +200,6 @@ public class OracleASTVisitorAdapterTest extends TestCase { new OracleForStatement().accept(adapter); new OracleAlterIndexStatement().accept(adapter); new OracleRangeExpr().accept(adapter); - new OracleAlterTableAddConstaint().accept(adapter); new OraclePrimaryKey().accept(adapter); new OracleCreateTableStatement().accept(adapter); new SQLAlterTableRename().accept(adapter);