improve sql parser & add testcase & refactor

This commit is contained in:
wenshao
2013-08-05 09:48:26 +08:00
parent 6d2a511a0a
commit 228e5873cc
14 changed files with 418 additions and 145 deletions
@@ -65,9 +65,8 @@ import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.NotNullConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddForeignKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys;
@@ -1392,13 +1391,6 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
return false;
}
@Override
public boolean visit(SQLAlterTableAddPrimaryKey x) {
print("ADD ");
x.getPrimaryKey().accept(this);
return false;
}
@Override
public boolean visit(SQLOver x) {
print("OVER (");
@@ -1539,13 +1531,6 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
return false;
}
@Override
public boolean visit(SQLAlterTableAddForeignKey x) {
print("ADD ");
x.getForeignKey().accept(this);
return false;
}
public boolean visit(SQLAlterTableDisableConstraint x) {
print("DISABLE CONSTRAINT ");
x.getConstraintName().accept(this);
@@ -1790,7 +1775,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
@Override
public boolean visit(SQLDropDatabaseStatement x) {
print("DROP DATABASE ");
if (x.isIfExists()) {
print("IF EXISTS ");
}
@@ -1799,7 +1784,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
return false;
}
@Override
public boolean visit(SQLAlterTableAddIndex x) {
print("ADD ");
@@ -1807,7 +1792,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
print(x.getType());
print(" ");
}
if (x.isUnique()) {
print("UNIQUE ");
}
@@ -1828,4 +1813,16 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
}
return false;
}
@Override
public boolean visit(SQLAlterTableAddConstraint x) {
if (x.isWithNoCheck()) {
print("WITH NOCHECK ");
}
print("ADD ");
x.getConstraint().accept(this);
return false;
}
}
@@ -50,9 +50,8 @@ import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.NotNullConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddForeignKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys;
@@ -364,10 +363,6 @@ public interface SQLASTVisitor {
void endVisit(SQLAlterTableDropIndex x);
boolean visit(SQLAlterTableAddPrimaryKey x);
void endVisit(SQLAlterTableAddPrimaryKey x);
boolean visit(SQLDropIndexStatement x);
void endVisit(SQLDropIndexStatement x);
@@ -444,10 +439,6 @@ public interface SQLASTVisitor {
void endVisit(SQLAlterTableStatement x);
boolean visit(SQLAlterTableAddForeignKey x);
void endVisit(SQLAlterTableAddForeignKey x);
boolean visit(SQLAlterTableDisableConstraint x);
void endVisit(SQLAlterTableDisableConstraint x);
@@ -495,28 +486,32 @@ public interface SQLASTVisitor {
boolean visit(SQLDropSequenceStatement x);
void endVisit(SQLDropSequenceStatement x);
boolean visit(SQLDropTriggerStatement x);
void endVisit(SQLDropTriggerStatement x);
void endVisit(SQLDropUserStatement x);
boolean visit(SQLDropUserStatement x);
void endVisit(SQLExplainStatement x);
boolean visit(SQLExplainStatement x);
void endVisit(SQLGrantStatement x);
boolean visit(SQLGrantStatement x);
void endVisit(SQLDropDatabaseStatement x);
boolean visit(SQLDropDatabaseStatement x);
void endVisit(SQLAlterTableAddIndex x);
boolean visit(SQLAlterTableAddIndex x);
void endVisit(SQLAlterTableAddConstraint x);
boolean visit(SQLAlterTableAddConstraint x);
}
@@ -51,9 +51,8 @@ import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.NotNullConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddForeignKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPrimaryKey;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint;
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableKeys;
@@ -679,16 +678,6 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
}
@Override
public boolean visit(SQLAlterTableAddPrimaryKey x) {
return true;
}
@Override
public void endVisit(SQLAlterTableAddPrimaryKey x) {
}
@Override
public void endVisit(SQLOver x) {
}
@@ -816,16 +805,6 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
}
@Override
public boolean visit(SQLAlterTableAddForeignKey x) {
return true;
}
@Override
public void endVisit(SQLAlterTableAddForeignKey x) {
}
@Override
public boolean visit(SQLAlterTableDisableConstraint x) {
return true;
@@ -968,44 +947,54 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
public boolean visit(SQLDropUserStatement x) {
return true;
}
@Override
public void endVisit(SQLExplainStatement x) {
}
@Override
public boolean visit(SQLExplainStatement x) {
return true;
}
@Override
public void endVisit(SQLGrantStatement x) {
}
@Override
public boolean visit(SQLGrantStatement x) {
return true;
}
@Override
public void endVisit(SQLDropDatabaseStatement x) {
}
@Override
public boolean visit(SQLDropDatabaseStatement x) {
return true;
}
@Override
public void endVisit(SQLAlterTableAddIndex x) {
}
@Override
public boolean visit(SQLAlterTableAddIndex x) {
return true;
}
@Override
public void endVisit(SQLAlterTableAddConstraint x) {
}
@Override
public boolean visit(SQLAlterTableAddConstraint x) {
return true;
}
}