sql parser direct support OVER

This commit is contained in:
wenshao
2012-11-21 23:37:18 +08:00
parent 04321df02c
commit 96c1950a8d
19 changed files with 270 additions and 233 deletions
@@ -24,6 +24,7 @@ import com.alibaba.druid.sql.ast.SQLDataType;
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.SQLSetQuantifier;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr;
@@ -451,6 +452,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter {
printAndAccept(x.getArguments(), ", ");
print(")");
if (x.getOver() != null) {
print(" ");
x.getOver().accept(this);
}
return false;
}
@@ -1161,4 +1167,16 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter {
x.getPrimaryKey().accept(this);
return false;
}
@Override
public boolean visit(SQLOver x) {
print("OVER (");
printAndAccept(x.getPartitionBy(), ", ");
print(")");
if (x.getOrderBy() != null) {
print(" ");
x.getOrderBy().accept(this);
}
return false;
}
}
@@ -19,6 +19,7 @@ import com.alibaba.druid.sql.ast.SQLCommentHint;
import com.alibaba.druid.sql.ast.SQLDataType;
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.expr.SQLAggregateExpr;
import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
import com.alibaba.druid.sql.ast.expr.SQLAllExpr;
@@ -390,4 +391,8 @@ public interface SQLASTVisitor {
void endVisit(SQLCreateDatabaseStatement x);
boolean visit(SQLCreateDatabaseStatement x);
void endVisit(SQLOver x);
boolean visit(SQLOver x);
}
@@ -19,6 +19,7 @@ import com.alibaba.druid.sql.ast.SQLCommentHint;
import com.alibaba.druid.sql.ast.SQLDataType;
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.expr.SQLAggregateExpr;
import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
import com.alibaba.druid.sql.ast.expr.SQLAllExpr;
@@ -704,4 +705,13 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
public void endVisit(SQLAlterTableAddPrimaryKey x) {
}
@Override
public void endVisit(SQLOver x) {
}
@Override
public boolean visit(SQLOver x) {
return true;
}
}