mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved pg sql parser. for issue #2309
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
package com.alibaba.druid.sql.dialect.postgresql.ast.stmt;
|
||||
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
import com.alibaba.druid.util.JdbcConstants;
|
||||
|
||||
public class PGConnectToStatement extends SQLStatementImpl implements PGSQLStatement {
|
||||
private SQLName target;
|
||||
|
||||
public PGConnectToStatement() {
|
||||
super(JdbcConstants.POSTGRESQL);
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
this.accept0((PGASTVisitor) visitor);
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(buf, dbType);
|
||||
this.accept(visitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept0(PGASTVisitor v) {
|
||||
if (v.visit(this)) {
|
||||
acceptChild(v, target);
|
||||
}
|
||||
v.endVisit(this);
|
||||
}
|
||||
|
||||
public SQLName getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(SQLName x) {
|
||||
if (x != null) {
|
||||
x.setParent(this);
|
||||
}
|
||||
this.target = x;
|
||||
}
|
||||
}
|
||||
@@ -106,7 +106,9 @@ public interface PGASTVisitor extends SQLASTVisitor {
|
||||
boolean visit(PGShowStatement x);
|
||||
|
||||
void endVisit(PGStartTransactionStatement x);
|
||||
|
||||
boolean visit(PGStartTransactionStatement x);
|
||||
|
||||
void endVisit(PGConnectToStatement x);
|
||||
boolean visit(PGConnectToStatement x);
|
||||
|
||||
}
|
||||
|
||||
+10
@@ -257,4 +257,14 @@ public class PGASTVisitorAdapter extends SQLASTVisitorAdapter implements PGASTVi
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(PGConnectToStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(PGConnectToStatement x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -651,6 +651,18 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(PGConnectToStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(PGConnectToStatement x) {
|
||||
print0(ucase ? "CONNECT TO " : "connect to ");
|
||||
x.getTarget().accept(this);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLSetStatement x) {
|
||||
print0(ucase ? "SET " : "set ");
|
||||
|
||||
+10
@@ -339,4 +339,14 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(PGConnectToStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(PGConnectToStatement x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user