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 78f3b55336..36d908850a 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 @@ -30,7 +30,6 @@ import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr; import com.alibaba.druid.sql.ast.expr.SQLCharExpr; import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.ast.expr.SQLNullExpr; -import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr; import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn; import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem; @@ -44,7 +43,6 @@ import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; import com.alibaba.druid.sql.ast.statement.SQLIfStatement; import com.alibaba.druid.sql.ast.statement.SQLLoopStatement; -import com.alibaba.druid.sql.ast.statement.SQLSelect; import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; import com.alibaba.druid.sql.ast.statement.SQLShowTablesStatement; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlForceIndexHint; @@ -3206,41 +3204,6 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV return false; } - @Override - public boolean visit(SQLParameter x) { - if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { - print0(ucase ? "CURSOR " : "cursor "); - x.getName().accept(this); - print0(ucase ? " IS" : " is"); - incrementIndent(); - println(); - SQLSelect select = ((SQLQueryExpr) x.getDefaultValue()).getSubQuery(); - select.accept(this); - decrementIndent(); - - } else { - - if (x.getParamType() == SQLParameter.ParameterType.IN) { - print0(ucase ? "IN " : "in "); - } else if (x.getParamType() == SQLParameter.ParameterType.OUT) { - print0(ucase ? "OUT " : "out "); - } else if (x.getParamType() == SQLParameter.ParameterType.INOUT) { - print0(ucase ? "INOUT " : "inout "); - } - x.getName().accept(this); - print(' '); - - x.getDataType().accept(this); - - if (x.getDefaultValue() != null) { - print0(" := "); - x.getDefaultValue().accept(this); - } - } - - return false; - } - @Override public boolean visit(MySqlWhileStatement x) { if (x.getLabelName() != null && !x.getLabelName().equals("")) { 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 c85e0bc89f..7d68d8f326 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 @@ -28,7 +28,6 @@ import com.alibaba.druid.sql.ast.expr.SQLCharExpr; 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.SQLAlterTableItem; import com.alibaba.druid.sql.ast.statement.SQLBlockStatement; import com.alibaba.druid.sql.ast.statement.SQLCharacterDataType; @@ -2515,38 +2514,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } - @Override - public boolean visit(SQLParameter x) { - if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { - print0(ucase ? "CURSOR " : "cursor "); - x.getName().accept(this); - print0(ucase ? " IS" : " is"); - incrementIndent(); - println(); - SQLSelect select = ((SQLQueryExpr) x.getDefaultValue()).getSubQuery(); - select.accept(this); - decrementIndent(); - - } else { - x.getName().accept(this); - print(' '); - - x.getDataType().accept(this); - - if (x.getDefaultValue() != null) { - print0(" := "); - x.getDefaultValue().accept(this); - } - } - - return false; - } - - @Override - public void endVisit(SQLParameter x) { - - } - @Override public boolean visit(OracleCommitStatement x) { print0(ucase ? "COMMIT" : "commit"); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/expr/PGParameter.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/expr/PGParameter.java deleted file mode 100644 index cc41d36de7..0000000000 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/expr/PGParameter.java +++ /dev/null @@ -1,52 +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.postgresql.ast.expr; - -import com.alibaba.druid.sql.ast.SQLDataType; -import com.alibaba.druid.sql.ast.SQLExpr; -import com.alibaba.druid.sql.dialect.postgresql.ast.PGSQLObjectImpl; -import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor; - -public class PGParameter extends PGSQLObjectImpl { - - private SQLExpr name; - private SQLDataType dataType; - - public SQLExpr getName() { - return name; - } - - public void setName(SQLExpr name) { - this.name = name; - } - - public SQLDataType getDataType() { - return dataType; - } - - public void setDataType(SQLDataType dataType) { - this.dataType = dataType; - } - - @Override - public void accept0(PGASTVisitor visitor) { - if (visitor.visit(this)) { - acceptChild(visitor, name); - acceptChild(visitor, dataType); - } - visitor.endVisit(this); - } -} diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGFunctionTableSource.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGFunctionTableSource.java index 741f3e462b..555de64ab4 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGFunctionTableSource.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/ast/stmt/PGFunctionTableSource.java @@ -19,15 +19,15 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.SQLParameter; import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; import com.alibaba.druid.sql.dialect.postgresql.ast.PGSQLObject; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor; import com.alibaba.druid.sql.visitor.SQLASTVisitor; public class PGFunctionTableSource extends SQLExprTableSource implements PGSQLObject { - private final List parameters = new ArrayList(); + private final List parameters = new ArrayList(); public PGFunctionTableSource(){ @@ -37,7 +37,7 @@ public class PGFunctionTableSource extends SQLExprTableSource implements PGSQLOb this.expr = expr; } - public List getParameters() { + public List getParameters() { return parameters; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java index 0da7c67fea..b76fa7176c 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java @@ -18,13 +18,13 @@ package com.alibaba.druid.sql.dialect.postgresql.parser; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.SQLParameter; import com.alibaba.druid.sql.ast.SQLSetQuantifier; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; import com.alibaba.druid.sql.ast.statement.SQLSelectQuery; import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; import com.alibaba.druid.sql.ast.statement.SQLTableSource; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGFunctionTableSource; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.IntoOption; @@ -286,9 +286,9 @@ public class PGSelectParser extends SQLSelectParser { return super.parseTableSourceRest(tableSource); } - private void parserParameters(List parameters) { + private void parserParameters(List parameters) { for (;;) { - PGParameter parameter = new PGParameter(); + SQLParameter parameter = new SQLParameter(); parameter.setName(this.exprParser.name()); parameter.setDataType(this.exprParser.parseDataType()); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java index 80689f5053..e1371e25fa 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitor.java @@ -25,7 +25,6 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGInetExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGIntervalExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGLineSegmentsExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGMacAddrExpr; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPointExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPolygonExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGTypeCastExpr; @@ -85,10 +84,6 @@ public interface PGASTVisitor extends SQLASTVisitor { boolean visit(PGUpdateStatement x); - void endVisit(PGParameter x); - - boolean visit(PGParameter x); - void endVisit(PGFunctionTableSource x); boolean visit(PGFunctionTableSource x); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java index 749ede451b..0164ad9702 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGASTVisitorAdapter.java @@ -25,7 +25,6 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGInetExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGIntervalExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGLineSegmentsExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGMacAddrExpr; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPointExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPolygonExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGTypeCastExpr; @@ -150,16 +149,6 @@ public class PGASTVisitorAdapter extends SQLASTVisitorAdapter implements PGASTVi return true; } - @Override - public void endVisit(PGParameter x) { - - } - - @Override - public boolean visit(PGParameter x) { - return true; - } - @Override public void endVisit(PGFunctionTableSource x) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index 92a589cbe9..2d61fa616e 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -29,7 +29,6 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGInetExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGIntervalExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGLineSegmentsExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGMacAddrExpr; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPointExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPolygonExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGTypeCastExpr; @@ -448,21 +447,6 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor } - @Override - public void endVisit(PGParameter x) { - - } - - @Override - public boolean visit(PGParameter x) { - x.getName().accept(this); - print(' '); - - x.getDataType().accept(this); - - return false; - } - @Override public boolean visit(PGFunctionTableSource x) { x.getExpr().accept(this); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java index d26abfa178..31231ea9c9 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGSchemaStatVisitor.java @@ -31,7 +31,6 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGInetExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGIntervalExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGLineSegmentsExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGMacAddrExpr; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPointExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGPolygonExpr; import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGTypeCastExpr; @@ -261,16 +260,6 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit return this.visit((SQLSelectQueryBlock) x); } - @Override - public void endVisit(PGParameter x) { - - } - - @Override - public boolean visit(PGParameter x) { - return false; - } - @Override public void endVisit(PGFunctionTableSource x) { 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 876dc2c77c..bcc8d543b9 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -32,6 +32,7 @@ import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLObject; import com.alibaba.druid.sql.ast.SQLOrderBy; import com.alibaba.druid.sql.ast.SQLOver; +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.SQLAggregateExpr; @@ -2567,6 +2568,41 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print0(ucase ? "END LOOP" : "end loop"); return false; } + + @Override + public boolean visit(SQLParameter x) { + if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { + print0(ucase ? "CURSOR " : "cursor "); + x.getName().accept(this); + print0(ucase ? " IS" : " is"); + incrementIndent(); + println(); + SQLSelect select = ((SQLQueryExpr) x.getDefaultValue()).getSubQuery(); + select.accept(this); + decrementIndent(); + + } else { + + if (x.getParamType() == SQLParameter.ParameterType.IN) { + print0(ucase ? "IN " : "in "); + } else if (x.getParamType() == SQLParameter.ParameterType.OUT) { + print0(ucase ? "OUT " : "out "); + } else if (x.getParamType() == SQLParameter.ParameterType.INOUT) { + print0(ucase ? "INOUT " : "inout "); + } + x.getName().accept(this); + print(' '); + + x.getDataType().accept(this); + + if (x.getDefaultValue() != null) { + print0(" := "); + x.getDefaultValue().accept(this); + } + } + + return false; + } public boolean isUppCase() { return ucase; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGASTVisitorAdapterTest.java b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGASTVisitorAdapterTest.java index 4f6dbc8962..d6558e6c0a 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGASTVisitorAdapterTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGASTVisitorAdapterTest.java @@ -1,10 +1,7 @@ package com.alibaba.druid.bvt.sql.postgresql; -import junit.framework.TestCase; - import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithClause; import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithQuery; -import com.alibaba.druid.sql.dialect.postgresql.ast.expr.PGParameter; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGDeleteStatement; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGFunctionTableSource; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.FetchClause; @@ -12,6 +9,8 @@ import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.ForC import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.WindowClause; import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitorAdapter; +import junit.framework.TestCase; + public class PGASTVisitorAdapterTest extends TestCase { public void test_adapter() throws Exception { @@ -23,7 +22,6 @@ public class PGASTVisitorAdapterTest extends TestCase { new PGWithQuery().accept(adapter); new PGWithClause().accept(adapter); new PGDeleteStatement().accept(adapter); - new PGParameter().accept(adapter); new PGFunctionTableSource().accept(adapter); } }