bug fixed for sql parser

This commit is contained in:
温少
2012-03-08 23:52:22 +08:00
parent 19d1eccb91
commit 96e8a83a37
43 changed files with 1674 additions and 317 deletions
@@ -1,35 +0,0 @@
package com.alibaba.druid.sql.dialect.postgresql.ast;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGASTVisitor;
public class PGCurrentOfExpr extends PGSQLObjectImpl implements SQLExpr {
private static final long serialVersionUID = 1L;
private SQLExpr cursor;
public PGCurrentOfExpr() {
}
public PGCurrentOfExpr(SQLExpr cursor) {
this.cursor = cursor;
}
public SQLExpr getCursor() {
return cursor;
}
public void setCursor(SQLExpr cursor) {
this.cursor = cursor;
}
@Override
public void accept0(PGASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, cursor);
}
visitor.endVisit(this);
}
}
@@ -5,12 +5,12 @@ import java.util.List;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLName;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLCurrentOfCursorExpr;
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
import com.alibaba.druid.sql.ast.statement.SQLTableSource;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGCurrentOfExpr;
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.stmt.PGDeleteStatement;
@@ -169,7 +169,7 @@ public class PGSQLStatementParser extends SQLStatementParser {
lexer.nextToken();
accept(Token.OF);
SQLName cursorName = this.exprParser.name();
SQLExpr where = new PGCurrentOfExpr(cursorName);
SQLExpr where = new SQLCurrentOfCursorExpr(cursorName);
deleteStatement.setWhere(where);
} else {
SQLExpr where = this.exprParser.expr();
@@ -1,6 +1,5 @@
package com.alibaba.druid.sql.dialect.postgresql.visitor;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGCurrentOfExpr;
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.stmt.PGDeleteStatement;
@@ -45,10 +44,6 @@ public interface PGASTVisitor extends SQLASTVisitor {
boolean visit(PGDeleteStatement x);
void endVisit(PGCurrentOfExpr x);
boolean visit(PGCurrentOfExpr x);
void endVisit(PGInsertStatement x);
boolean visit(PGInsertStatement x);
@@ -1,6 +1,5 @@
package com.alibaba.druid.sql.dialect.postgresql.visitor;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGCurrentOfExpr;
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.stmt.PGDeleteStatement;
@@ -104,16 +103,6 @@ public class PGASTVisitorAdapter extends SQLASTVisitorAdapter implements PGASTVi
return true;
}
@Override
public void endVisit(PGCurrentOfExpr x) {
}
@Override
public boolean visit(PGCurrentOfExpr x) {
return true;
}
@Override
public void endVisit(PGInsertStatement x) {
@@ -3,7 +3,6 @@ package com.alibaba.druid.sql.dialect.postgresql.visitor;
import com.alibaba.druid.sql.ast.SQLSetQuantifier;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGCurrentOfExpr;
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.stmt.PGDeleteStatement;
@@ -318,19 +317,6 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor
return false;
}
@Override
public void endVisit(PGCurrentOfExpr x) {
}
@Override
public boolean visit(PGCurrentOfExpr x) {
print("CURRENT OF ");
x.getCursor().accept(this);
return false;
}
@Override
public void endVisit(PGInsertStatement x) {
@@ -6,7 +6,6 @@ import com.alibaba.druid.sql.ast.SQLName;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement;
import com.alibaba.druid.sql.dialect.postgresql.ast.PGCurrentOfExpr;
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.stmt.PGDeleteStatement;
@@ -152,16 +151,6 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit
return false;
}
@Override
public void endVisit(PGCurrentOfExpr x) {
}
@Override
public boolean visit(PGCurrentOfExpr x) {
return false;
}
@Override
public void endVisit(PGInsertStatement x) {
@@ -225,7 +214,7 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit
@Override
public boolean visit(PGUpdateStatement x) {
Map<String, String> oldAliasMap = getAliasMap();
setAliasMap();
if (x.getWith() != null) {
@@ -243,7 +232,7 @@ public class PGSchemaStatVisitor extends SchemaStatVisitor implements PGASTVisit
accept(x.getItems());
accept(x.getWhere());
setAliasMap(oldAliasMap);
return false;