mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
Share project "druid" into "http://code.alibabatech.com/svn/druid"
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@2 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class NotNullConstraint extends SQLConstaintImpl implements SQLColumnConstraint {
|
||||
|
||||
public NotNullConstraint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
visitor.visit(this);
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLCallStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLName procedureName;
|
||||
|
||||
private final List<SQLExpr> parameters = new ArrayList<SQLExpr>();
|
||||
|
||||
public SQLName getProcedureName() {
|
||||
return procedureName;
|
||||
}
|
||||
|
||||
public void setProcedureName(SQLName procedureName) {
|
||||
this.procedureName = procedureName;
|
||||
}
|
||||
|
||||
public List<SQLExpr> getParameters() {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.procedureName);
|
||||
acceptChild(visitor, this.parameters);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLDataTypeImpl;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class SQLCharactorDataType extends SQLDataTypeImpl {
|
||||
private String charSetName;
|
||||
private String collate;
|
||||
|
||||
public SQLCharactorDataType(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public String getCharSetName() {
|
||||
return charSetName;
|
||||
}
|
||||
|
||||
public void setCharSetName(String charSetName) {
|
||||
this.charSetName = charSetName;
|
||||
}
|
||||
|
||||
public String getCollate() {
|
||||
return collate;
|
||||
}
|
||||
|
||||
public void setCollate(String collate) {
|
||||
this.collate = collate;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
public interface SQLColumnConstraint extends SQLConstaint {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLDataType;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class SQLColumnDefinition extends SQLObjectImpl implements SQLTableElement {
|
||||
private SQLName name;
|
||||
private SQLDataType dataType;
|
||||
private SQLExpr defaultExpr;
|
||||
private final List<SQLColumnConstraint> constaints = new ArrayList<SQLColumnConstraint>(0);
|
||||
private String comment;
|
||||
|
||||
public SQLColumnDefinition() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(SQLName name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public SQLDataType getDataType() {
|
||||
return dataType;
|
||||
}
|
||||
|
||||
public void setDataType(SQLDataType dataType) {
|
||||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
public SQLExpr getDefaultExpr() {
|
||||
return defaultExpr;
|
||||
}
|
||||
|
||||
public void setDefaultExpr(SQLExpr defaultExpr) {
|
||||
this.defaultExpr = defaultExpr;
|
||||
}
|
||||
|
||||
public List<SQLColumnConstraint> getConstaints() {
|
||||
return constaints;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void output(StringBuffer buf) {
|
||||
name.output(buf);
|
||||
buf.append(' ');
|
||||
this.dataType.output(buf);
|
||||
if (defaultExpr != null) {
|
||||
buf.append(" DEFAULT ");
|
||||
this.defaultExpr.output(buf);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
this.acceptChild(visitor, name);
|
||||
this.acceptChild(visitor, dataType);
|
||||
this.acceptChild(visitor, defaultExpr);
|
||||
this.acceptChild(visitor, constaints);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObject;
|
||||
|
||||
public interface SQLConstaint extends SQLObject {
|
||||
SQLName getName();
|
||||
|
||||
void setName(SQLName value);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public abstract class SQLConstaintImpl extends SQLObjectImpl implements SQLConstaint {
|
||||
private SQLName name;
|
||||
|
||||
public SQLConstaintImpl() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(SQLName name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class SQLCreateTableStatement extends SQLStatementImpl {
|
||||
|
||||
protected Type type;
|
||||
protected SQLName name;
|
||||
|
||||
protected List<SQLTableElement> tableElementList = new ArrayList<SQLTableElement>();
|
||||
|
||||
public SQLCreateTableStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(SQLName name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public static enum Type {
|
||||
GLOBAL_TEMPORARY,
|
||||
LOCAL_TEMPORARY
|
||||
}
|
||||
|
||||
public List<SQLTableElement> getTableElementList() {
|
||||
return tableElementList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("CREATE TABLE ");
|
||||
if (Type.GLOBAL_TEMPORARY.equals(this.type)) {
|
||||
buf.append("GLOBAL TEMPORARY ");
|
||||
} else if (Type.LOCAL_TEMPORARY.equals(this.type)) {
|
||||
buf.append("LOCAL TEMPORARY ");
|
||||
}
|
||||
|
||||
this.name.output(buf);
|
||||
buf.append(" ");
|
||||
|
||||
buf.append("(");
|
||||
for (int i = 0, size = tableElementList.size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
buf.append(", ");
|
||||
}
|
||||
tableElementList.get(i).output(buf);
|
||||
}
|
||||
buf.append(")");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
this.acceptChild(visitor, name);
|
||||
this.acceptChild(visitor, tableElementList);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLCreateViewStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
protected SQLName name;
|
||||
protected SQLSelect subQuery;
|
||||
|
||||
protected final List<SQLExpr> columns = new ArrayList<SQLExpr>();
|
||||
|
||||
private Level with;
|
||||
|
||||
public SQLCreateViewStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(SQLName name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Level getWith() {
|
||||
return with;
|
||||
}
|
||||
|
||||
public void setWith(Level with) {
|
||||
this.with = with;
|
||||
}
|
||||
|
||||
public SQLSelect getSubQuery() {
|
||||
return subQuery;
|
||||
}
|
||||
|
||||
public void setSubQuery(SQLSelect subQuery) {
|
||||
this.subQuery = subQuery;
|
||||
}
|
||||
|
||||
public List<SQLExpr> getColumns() {
|
||||
return columns;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("CREATE VIEW ");
|
||||
this.name.output(buf);
|
||||
|
||||
if (this.columns.size() > 0) {
|
||||
buf.append(" (");
|
||||
for (int i = 0, size = this.columns.size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
buf.append(", ");
|
||||
}
|
||||
this.columns.get(i).output(buf);
|
||||
}
|
||||
buf.append(")");
|
||||
}
|
||||
|
||||
buf.append(" AS ");
|
||||
this.subQuery.output(buf);
|
||||
|
||||
if (this.with != null) {
|
||||
buf.append(" WITH ");
|
||||
buf.append(this.with.name());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.name);
|
||||
acceptChild(visitor, this.columns);
|
||||
acceptChild(visitor, this.subQuery);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public static enum Level {
|
||||
CASCADED,
|
||||
LOCAL
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLDeleteStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private SQLName tableName;
|
||||
private SQLExpr where;
|
||||
|
||||
public SQLDeleteStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getTableName() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
public void setTableName(SQLName tableName) {
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public SQLExpr getWhere() {
|
||||
return where;
|
||||
}
|
||||
|
||||
public void setWhere(SQLExpr where) {
|
||||
this.where = where;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("DELETE FROM ");
|
||||
this.tableName.output(buf);
|
||||
if (this.where != null) {
|
||||
buf.append(" WHERE ");
|
||||
this.where.output(buf);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, tableName);
|
||||
acceptChild(visitor, where);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLDropTableStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLName name;
|
||||
|
||||
public SQLDropTableStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLDropTableStatement(SQLName name) {
|
||||
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public SQLName getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(SQLName name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("DROP TABLE ");
|
||||
this.name.output(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
this.acceptChild(visitor, name);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLExprTableSource extends SQLTableSource {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected SQLExpr expr;
|
||||
|
||||
public SQLExprTableSource() {
|
||||
|
||||
}
|
||||
|
||||
public SQLExpr getExpr() {
|
||||
return this.expr;
|
||||
}
|
||||
|
||||
public void setExpr(SQLExpr expr) {
|
||||
this.expr = expr;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.expr);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
this.expr.output(buf);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
|
||||
public interface SQLForeignKeyConstraint extends SQLConstaint {
|
||||
List<SQLName> getReferencingColumns();
|
||||
|
||||
SQLName getReferencedTableName();
|
||||
|
||||
void setReferencedTableName(SQLName value);
|
||||
|
||||
List<SQLName> getReferencedColumns();
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLInsertStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private SQLName tableName;
|
||||
|
||||
private final List<SQLExpr> columns = new ArrayList<SQLExpr>();
|
||||
private ValuesClause values;
|
||||
private SQLQueryExpr query;
|
||||
|
||||
public SQLInsertStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getTableName() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
public void setTableName(SQLName tableName) {
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public SQLQueryExpr getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
public void setQuery(SQLQueryExpr query) {
|
||||
this.query = query;
|
||||
}
|
||||
|
||||
public List<SQLExpr> getColumns() {
|
||||
return columns;
|
||||
}
|
||||
|
||||
public ValuesClause getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public void setValues(ValuesClause values) {
|
||||
this.values = values;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("INSERT INTO ");
|
||||
this.tableName.output(buf);
|
||||
if (columns.size() > 0) {
|
||||
buf.append(" (");
|
||||
for (int i = 0, size = columns.size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
buf.append(", ");
|
||||
}
|
||||
columns.get(i).output(buf);
|
||||
}
|
||||
buf.append(")");
|
||||
}
|
||||
|
||||
if (values != null) {
|
||||
values.output(buf);
|
||||
} else {
|
||||
buf.append(" ");
|
||||
this.query.output(buf);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
this.acceptChild(visitor, tableName);
|
||||
this.acceptChild(visitor, columns);
|
||||
this.acceptChild(visitor, values);
|
||||
this.acceptChild(visitor, query);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public static class ValuesClause extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private final List<SQLExpr> values = new ArrayList<SQLExpr>();
|
||||
|
||||
public List<SQLExpr> getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append(" VALUES (");
|
||||
for (int i = 0, size = values.size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
buf.append(", ");
|
||||
}
|
||||
values.get(i).output(buf);
|
||||
}
|
||||
buf.append(")");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
this.acceptChild(visitor, values);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLJoinTableSource extends SQLTableSource {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected SQLTableSource left;
|
||||
protected JoinType joinType;
|
||||
protected SQLTableSource right;
|
||||
protected SQLExpr condition;
|
||||
|
||||
public SQLJoinTableSource(String alias) {
|
||||
super(alias);
|
||||
}
|
||||
|
||||
public SQLJoinTableSource() {
|
||||
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.left);
|
||||
acceptChild(visitor, this.right);
|
||||
acceptChild(visitor, this.condition);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public JoinType getJoinType() {
|
||||
return this.joinType;
|
||||
}
|
||||
|
||||
public void setJoinType(JoinType joinType) {
|
||||
this.joinType = joinType;
|
||||
}
|
||||
|
||||
public SQLTableSource getLeft() {
|
||||
return this.left;
|
||||
}
|
||||
|
||||
public void setLeft(SQLTableSource left) {
|
||||
this.left = left;
|
||||
}
|
||||
|
||||
public SQLTableSource getRight() {
|
||||
return this.right;
|
||||
}
|
||||
|
||||
public void setRight(SQLTableSource right) {
|
||||
this.right = right;
|
||||
}
|
||||
|
||||
public SQLExpr getCondition() {
|
||||
return this.condition;
|
||||
}
|
||||
|
||||
public void setCondition(SQLExpr condition) {
|
||||
this.condition = condition;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
this.left.output(buf);
|
||||
buf.append(' ');
|
||||
buf.append(JoinType.toString(this.joinType));
|
||||
buf.append(' ');
|
||||
this.right.output(buf);
|
||||
|
||||
if (this.condition != null) {
|
||||
buf.append(" ON ");
|
||||
this.condition.output(buf);
|
||||
}
|
||||
}
|
||||
|
||||
public static enum JoinType {
|
||||
COMMA,
|
||||
JOIN,
|
||||
INNER_JOIN,
|
||||
CROSS_JOIN,
|
||||
NATURAL_JOIN,
|
||||
NATURAL_INNER_JOIN,
|
||||
LEFT_OUTER_JOIN,
|
||||
RIGHT_OUTER_JOIN,
|
||||
FULL_OUTER_JOIN;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
public interface SQLPrimaryKey extends SQLUniqueConstraint {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.ast.SQLOrderBy;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSelect extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected SQLSelectQuery query;
|
||||
protected SQLOrderBy orderBy;
|
||||
|
||||
public SQLSelect() {
|
||||
|
||||
}
|
||||
|
||||
public SQLSelectQuery getQuery() {
|
||||
return this.query;
|
||||
}
|
||||
|
||||
public void setQuery(SQLSelectQuery query) {
|
||||
this.query = query;
|
||||
}
|
||||
|
||||
public SQLOrderBy getOrderBy() {
|
||||
return this.orderBy;
|
||||
}
|
||||
|
||||
public void setOrderBy(SQLOrderBy orderBy) {
|
||||
this.orderBy = orderBy;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
this.query.output(buf);
|
||||
buf.append(" ");
|
||||
|
||||
if (this.orderBy != null) this.orderBy.output(buf);
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.query);
|
||||
acceptChild(visitor, this.orderBy);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSelectGroupByClause extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final List<SQLExpr> items = new ArrayList<SQLExpr>();
|
||||
private SQLExpr having;
|
||||
|
||||
public SQLSelectGroupByClause() {
|
||||
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.items);
|
||||
acceptChild(visitor, this.having);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public SQLExpr getHaving() {
|
||||
return this.having;
|
||||
}
|
||||
|
||||
public void setHaving(SQLExpr having) {
|
||||
this.having = having;
|
||||
}
|
||||
|
||||
public List<SQLExpr> getItems() {
|
||||
return this.items;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSelectItem extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLExpr expr;
|
||||
private String alias;
|
||||
|
||||
public SQLSelectItem() {
|
||||
|
||||
}
|
||||
|
||||
public SQLSelectItem(SQLExpr expr, String alias) {
|
||||
|
||||
this.expr = expr;
|
||||
this.alias = alias;
|
||||
}
|
||||
|
||||
public SQLExpr getExpr() {
|
||||
return this.expr;
|
||||
}
|
||||
|
||||
public void setExpr(SQLExpr expr) {
|
||||
this.expr = expr;
|
||||
}
|
||||
|
||||
public String getAlias() {
|
||||
return this.alias;
|
||||
}
|
||||
|
||||
public void setAlias(String alias) {
|
||||
this.alias = alias;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
this.expr.output(buf);
|
||||
if ((this.alias != null) && (this.alias.length() != 0)) {
|
||||
buf.append(" AS ");
|
||||
buf.append(this.alias);
|
||||
}
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.expr);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.ast.SQLOrderingSpecification;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSelectOrderByItem extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected SQLExpr expr;
|
||||
protected String collate;
|
||||
protected SQLOrderingSpecification type;
|
||||
|
||||
public SQLSelectOrderByItem() {
|
||||
|
||||
}
|
||||
|
||||
public SQLExpr getExpr() {
|
||||
return this.expr;
|
||||
}
|
||||
|
||||
public void setExpr(SQLExpr expr) {
|
||||
this.expr = expr;
|
||||
}
|
||||
|
||||
public String getCollate() {
|
||||
return collate;
|
||||
}
|
||||
|
||||
public void setCollate(String collate) {
|
||||
this.collate = collate;
|
||||
}
|
||||
|
||||
public SQLOrderingSpecification getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public void setType(SQLOrderingSpecification type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.expr);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
|
||||
public abstract class SQLSelectQuery extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public SQLSelectQuery() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLSetQuantifier;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSelectQueryBlock extends SQLSelectQuery {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected int distionOption;
|
||||
protected final List<SQLSelectItem> selectList = new ArrayList<SQLSelectItem>();
|
||||
|
||||
protected SQLTableSource from;;
|
||||
protected SQLExpr where;
|
||||
protected SQLSelectGroupByClause groupBy;
|
||||
|
||||
public SQLSelectQueryBlock() {
|
||||
|
||||
}
|
||||
|
||||
public SQLSelectGroupByClause getGroupBy() {
|
||||
return this.groupBy;
|
||||
}
|
||||
|
||||
public void setGroupBy(SQLSelectGroupByClause groupBy) {
|
||||
this.groupBy = groupBy;
|
||||
}
|
||||
|
||||
public SQLExpr getWhere() {
|
||||
return this.where;
|
||||
}
|
||||
|
||||
public void setWhere(SQLExpr where) {
|
||||
this.where = where;
|
||||
}
|
||||
|
||||
public int getDistionOption() {
|
||||
return this.distionOption;
|
||||
}
|
||||
|
||||
public void setDistionOption(int distionOption) {
|
||||
this.distionOption = distionOption;
|
||||
}
|
||||
|
||||
public List<SQLSelectItem> getSelectList() {
|
||||
return this.selectList;
|
||||
}
|
||||
|
||||
public SQLTableSource getFrom() {
|
||||
return this.from;
|
||||
}
|
||||
|
||||
public void setFrom(SQLTableSource from) {
|
||||
this.from = from;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.selectList);
|
||||
acceptChild(visitor, this.from);
|
||||
acceptChild(visitor, this.where);
|
||||
acceptChild(visitor, this.groupBy);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("SELECT ");
|
||||
|
||||
if (SQLSetQuantifier.ALL == this.distionOption) buf.append("ALL ");
|
||||
else if (SQLSetQuantifier.DISTINCT == this.distionOption) buf.append("DISTINCT ");
|
||||
else if (SQLSetQuantifier.UNIQUE == this.distionOption) {
|
||||
buf.append("UNIQUE ");
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
for (int size = this.selectList.size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
buf.append(", ");
|
||||
}
|
||||
((SQLSelectItem) this.selectList.get(i)).output(buf);
|
||||
}
|
||||
|
||||
buf.append(" FROM ");
|
||||
if (this.from == null) {
|
||||
buf.append("DUAL");
|
||||
} else {
|
||||
this.from.output(buf);
|
||||
}
|
||||
|
||||
if (this.where != null) {
|
||||
buf.append(" WHERE ");
|
||||
this.where.output(buf);
|
||||
}
|
||||
|
||||
if (this.groupBy != null) {
|
||||
buf.append(" ");
|
||||
this.groupBy.output(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSelectStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLSelect select;
|
||||
|
||||
public SQLSelectStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLSelectStatement(SQLSelect select) {
|
||||
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public SQLSelect getSelect() {
|
||||
return this.select;
|
||||
}
|
||||
|
||||
public void setSelect(SQLSelect select) {
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
this.select.output(buf);
|
||||
}
|
||||
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.select);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
public class SQLSelectUnionType {
|
||||
public final static int ALL = 0;
|
||||
public final static int DISTINCT = 1;
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSetStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private List<Item> items = new ArrayList<Item>();
|
||||
|
||||
public SQLSetStatement() {
|
||||
}
|
||||
|
||||
public List<Item> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
public void setItems(List<Item> items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.items);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("SET ");
|
||||
|
||||
for (int i = 0; i < items.size(); ++i) {
|
||||
if (i != 0) {
|
||||
buf.append(", ");
|
||||
}
|
||||
|
||||
Item item = items.get(i);
|
||||
item.output(buf);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Item extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLExpr target;
|
||||
private SQLExpr value;
|
||||
|
||||
public Item() {
|
||||
}
|
||||
|
||||
public Item(SQLExpr target, SQLExpr value) {
|
||||
this.target = target;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public SQLExpr getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(SQLExpr target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public SQLExpr getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(SQLExpr value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
target.output(buf);
|
||||
buf.append(" = ");
|
||||
value.output(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.target);
|
||||
acceptChild(visitor, this.value);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSubqueryTableSource extends SQLTableSource {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected SQLSelect select;
|
||||
|
||||
public SQLSubqueryTableSource() {
|
||||
|
||||
}
|
||||
|
||||
public SQLSubqueryTableSource(String alias) {
|
||||
super(alias);
|
||||
}
|
||||
|
||||
public SQLSubqueryTableSource(SQLSelect select, String alias) {
|
||||
super(alias);
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public SQLSubqueryTableSource(SQLSelect select) {
|
||||
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
public SQLSelect getSelect() {
|
||||
return this.select;
|
||||
}
|
||||
|
||||
public void setSelect(SQLSelect select) {
|
||||
this.select = select;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("(");
|
||||
this.select.output(buf);
|
||||
buf.append(")");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
public interface SQLTableConstaint extends SQLConstaint, SQLTableElement {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class SQLTableConstaintImpl extends SQLConstaintImpl implements SQLTableConstaint {
|
||||
|
||||
public SQLTableConstaintImpl() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLObject;
|
||||
|
||||
public interface SQLTableElement extends SQLObject {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
|
||||
public abstract class SQLTableSource extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected String alias;
|
||||
|
||||
public SQLTableSource() {
|
||||
|
||||
}
|
||||
|
||||
public SQLTableSource(String alias) {
|
||||
|
||||
this.alias = alias;
|
||||
}
|
||||
|
||||
public String getAlias() {
|
||||
return this.alias;
|
||||
}
|
||||
|
||||
public void setAlias(String alias) {
|
||||
this.alias = alias;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLUnionQuery extends SQLSelectQuery {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLSelectQuery left;
|
||||
private SQLSelectQuery right;
|
||||
private boolean all;
|
||||
|
||||
public SQLUnionQuery() {
|
||||
|
||||
}
|
||||
|
||||
public SQLSelectQuery getLeft() {
|
||||
return left;
|
||||
}
|
||||
|
||||
public void setLeft(SQLSelectQuery left) {
|
||||
this.left = left;
|
||||
}
|
||||
|
||||
public SQLSelectQuery getRight() {
|
||||
return right;
|
||||
}
|
||||
|
||||
public void setRight(SQLSelectQuery right) {
|
||||
this.right = right;
|
||||
}
|
||||
|
||||
public boolean isAll() {
|
||||
return all;
|
||||
}
|
||||
|
||||
public void setAll(boolean all) {
|
||||
this.all = all;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, left);
|
||||
acceptChild(visitor, right);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
|
||||
public interface SQLUniqueConstraint extends SQLConstaint {
|
||||
List<SQLExpr> getColumns();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class SQLUniqueConstraintImpl extends SQLConstaintImpl implements SQLUniqueConstraint {
|
||||
public SQLUniqueConstraintImpl() {
|
||||
|
||||
}
|
||||
|
||||
private List<SQLExpr> columns = new ArrayList<SQLExpr>();
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, this.getName());
|
||||
acceptChild(visitor, columns);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SQLExpr> getColumns() {
|
||||
return columns;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObjectImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLUpdateSetItem extends SQLObjectImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLName column;
|
||||
private SQLExpr value;
|
||||
|
||||
public SQLUpdateSetItem() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getColumn() {
|
||||
return column;
|
||||
}
|
||||
|
||||
public void setColumn(SQLName column) {
|
||||
this.column = column;
|
||||
}
|
||||
|
||||
public SQLExpr getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(SQLExpr value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public void output(StringBuffer buf) {
|
||||
column.output(buf);
|
||||
buf.append(" = ");
|
||||
value.output(buf);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, column);
|
||||
acceptChild(visitor, value);
|
||||
}
|
||||
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLUpdateStatement extends SQLStatementImpl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private SQLName tableName;
|
||||
|
||||
private final List<SQLUpdateSetItem> items = new ArrayList<SQLUpdateSetItem>();
|
||||
private SQLExpr where;
|
||||
|
||||
public SQLUpdateStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLName getTableName() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
public void setTableName(SQLName tableName) {
|
||||
this.tableName = tableName;
|
||||
}
|
||||
|
||||
public SQLExpr getWhere() {
|
||||
return where;
|
||||
}
|
||||
|
||||
public void setWhere(SQLExpr where) {
|
||||
this.where = where;
|
||||
}
|
||||
|
||||
public List<SQLUpdateSetItem> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void output(StringBuffer buf) {
|
||||
buf.append("UPDATE ");
|
||||
|
||||
this.tableName.output(buf);
|
||||
|
||||
buf.append(" SET ");
|
||||
for (int i = 0, size = items.size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
buf.append(", ");
|
||||
}
|
||||
items.get(i).output(buf);
|
||||
}
|
||||
|
||||
if (this.where != null) {
|
||||
buf.append(" WHERE ");
|
||||
this.where.output(buf);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, tableName);
|
||||
acceptChild(visitor, items);
|
||||
acceptChild(visitor, where);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user