mysql parser bug fixed

This commit is contained in:
温少
2012-05-17 14:47:54 +08:00
37 changed files with 767 additions and 156 deletions
@@ -91,24 +91,24 @@ public class SQLJoinTableSource extends SQLTableSourceImpl {
}
public static enum JoinType {
COMMA, JOIN, INNER_JOIN, CROSS_JOIN, NATURAL_JOIN, NATURAL_INNER_JOIN, LEFT_OUTER_JOIN, RIGHT_OUTER_JOIN,
FULL_OUTER_JOIN;
COMMA(","), //
JOIN("JOIN"), //
INNER_JOIN("INNER JOIN"), //
CROSS_JOIN("CROSS JOIN"), //
NATURAL_JOIN("NATURAL JOIN"), //
NATURAL_INNER_JOIN("NATURAL INNER JOIN"), //
LEFT_OUTER_JOIN("LEFT JOIN"),
RIGHT_OUTER_JOIN("RIGHT JOIN"),
FULL_OUTER_JOIN("FULL JOIN"),
STRAIGHT_JOIN("STRAIGHT_JOIN");
public final String name;
JoinType(String name){
this.name = name;
}
public static String toString(JoinType joinType) {
if (JOIN.equals(joinType)) return "JOIN";
if (INNER_JOIN.equals(joinType)) return "INNER JOIN";
if (CROSS_JOIN.equals(joinType)) return "CROSS JOIN";
if (NATURAL_JOIN.equals(joinType)) return "NATURAL JOIN";
if (NATURAL_INNER_JOIN.equals(joinType)) return "NATURAL INNER JOIN";
if (LEFT_OUTER_JOIN.equals(joinType)) return "LEFT JOIN";
if (RIGHT_OUTER_JOIN.equals(joinType)) return "RIGHT JOIN";
if (FULL_OUTER_JOIN.equals(joinType)) {
return "FULL JOIN";
}
if (COMMA.equals(joinType)) {
return ",";
}
throw new IllegalStateException("not supported join " + joinType);
return joinType.name;
}
}
}
@@ -1,5 +1,8 @@
package com.alibaba.druid.sql.ast.statement;
import java.util.List;
import com.alibaba.druid.sql.ast.SQLHint;
import com.alibaba.druid.sql.ast.SQLObject;
public interface SQLTableSource extends SQLObject {
@@ -7,4 +10,6 @@ public interface SQLTableSource extends SQLObject {
String getAlias();
void setAlias(String alias);
List<SQLHint> getHints();
}
@@ -15,6 +15,10 @@
*/
package com.alibaba.druid.sql.ast.statement;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.druid.sql.ast.SQLHint;
import com.alibaba.druid.sql.ast.SQLObjectImpl;
public abstract class SQLTableSourceImpl extends SQLObjectImpl implements SQLTableSource {
@@ -23,6 +27,8 @@ public abstract class SQLTableSourceImpl extends SQLObjectImpl implements SQLTab
protected String alias;
protected List<SQLHint> hints = new ArrayList<SQLHint>(2);
public SQLTableSourceImpl(){
}
@@ -39,4 +45,13 @@ public abstract class SQLTableSourceImpl extends SQLObjectImpl implements SQLTab
public void setAlias(String alias) {
this.alias = alias;
}
public List<SQLHint> getHints() {
return hints;
}
public void setHints(List<SQLHint> hints) {
this.hints = hints;
}
}
@@ -1,7 +1,7 @@
package com.alibaba.druid.sql.ast.statement;
public enum SQLUnionOperator {
UNION("UNION"), UNION_ALL("UNION ALL"), MINUS("MINUS"), INTERSECT("INTERSECT");
UNION("UNION"), UNION_ALL("UNION ALL"), MINUS("MINUS"), INTERSECT("INTERSECT"), DISTINCT("UNION DISTINCT");
public final String name;
@@ -15,6 +15,7 @@
*/
package com.alibaba.druid.sql.ast.statement;
import com.alibaba.druid.sql.ast.SQLOrderBy;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
public class SQLUnionQuery extends SQLSelectQuery {
@@ -24,6 +25,7 @@ public class SQLUnionQuery extends SQLSelectQuery {
private SQLSelectQuery left;
private SQLSelectQuery right;
private SQLUnionOperator operator = SQLUnionOperator.UNION;
private SQLOrderBy orderBy;
public SQLUnionOperator getOperator() {
return operator;
@@ -53,11 +55,20 @@ public class SQLUnionQuery extends SQLSelectQuery {
this.right = right;
}
public SQLOrderBy getOrderBy() {
return orderBy;
}
public void setOrderBy(SQLOrderBy orderBy) {
this.orderBy = orderBy;
}
@Override
protected void accept0(SQLASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, left);
acceptChild(visitor, right);
acceptChild(visitor, orderBy);
}
visitor.endVisit(this);
}