mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved sql parser.
This commit is contained in:
@@ -33,6 +33,21 @@ public class SQLDeclareItem extends SQLObjectImpl {
|
||||
|
||||
protected List<SQLTableElement> tableElementList = new ArrayList<SQLTableElement>();
|
||||
|
||||
public SQLDeclareItem() {
|
||||
|
||||
}
|
||||
|
||||
public SQLDeclareItem(SQLExpr name, SQLDataType dataType) {
|
||||
this.setName(name);
|
||||
this.setDataType(dataType);
|
||||
}
|
||||
|
||||
public SQLDeclareItem(SQLExpr name, SQLDataType dataType, SQLExpr value) {
|
||||
this.setName(name);
|
||||
this.setDataType(dataType);
|
||||
this.setValue(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
@@ -49,6 +64,9 @@ public class SQLDeclareItem extends SQLObjectImpl {
|
||||
}
|
||||
|
||||
public void setName(SQLExpr name) {
|
||||
if (name != null) {
|
||||
name.setParent(this);
|
||||
}
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@@ -57,6 +75,9 @@ public class SQLDeclareItem extends SQLObjectImpl {
|
||||
}
|
||||
|
||||
public void setDataType(SQLDataType dataType) {
|
||||
if (dataType != null) {
|
||||
dataType.setParent(this);
|
||||
}
|
||||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
@@ -65,6 +86,9 @@ public class SQLDeclareItem extends SQLObjectImpl {
|
||||
}
|
||||
|
||||
public void setValue(SQLExpr value) {
|
||||
if (value != null) {
|
||||
value.setParent(this);
|
||||
}
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,9 @@ public class SQLParameter extends SQLObjectImpl {
|
||||
}
|
||||
|
||||
public void setDefaultValue(SQLExpr deaultValue) {
|
||||
if (deaultValue != null) {
|
||||
deaultValue.setParent(this);
|
||||
}
|
||||
this.defaultValue = deaultValue;
|
||||
}
|
||||
|
||||
@@ -45,6 +48,9 @@ public class SQLParameter extends SQLObjectImpl {
|
||||
}
|
||||
|
||||
public void setName(SQLExpr name) {
|
||||
if (name != null) {
|
||||
name.setParent(this);
|
||||
}
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,12 @@ public class SQLCreateFunctionStatement extends SQLStatementImpl {
|
||||
|
||||
SQLDataType returnDataType;
|
||||
|
||||
// for mysql
|
||||
|
||||
private String comment;
|
||||
|
||||
private boolean deterministic = false;
|
||||
|
||||
@Override
|
||||
public void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
@@ -131,4 +137,20 @@ public class SQLCreateFunctionStatement extends SQLStatementImpl {
|
||||
}
|
||||
this.returnDataType = returnDataType;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return comment;
|
||||
}
|
||||
|
||||
public void setComment(String comment) {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public boolean isDeterministic() {
|
||||
return deterministic;
|
||||
}
|
||||
|
||||
public void setDeterministic(boolean deterministic) {
|
||||
this.deterministic = deterministic;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,9 +18,7 @@ package com.alibaba.druid.sql.ast.statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLDeclareItem;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.ast.*;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerObjectImpl;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerStatement;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerASTVisitor;
|
||||
@@ -30,7 +28,17 @@ public class SQLDeclareStatement extends SQLStatementImpl {
|
||||
|
||||
protected List<SQLDeclareItem> items = new ArrayList<SQLDeclareItem>();
|
||||
|
||||
private String dbType;
|
||||
public SQLDeclareStatement() {
|
||||
|
||||
}
|
||||
|
||||
public SQLDeclareStatement(SQLExpr name, SQLDataType dataType) {
|
||||
this.addItem(new SQLDeclareItem(name, dataType));
|
||||
}
|
||||
|
||||
public SQLDeclareStatement(SQLExpr name, SQLDataType dataType, SQLExpr value) {
|
||||
this.addItem(new SQLDeclareItem(name, dataType, value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept0(SQLASTVisitor visitor) {
|
||||
@@ -50,12 +58,4 @@ public class SQLDeclareStatement extends SQLStatementImpl {
|
||||
}
|
||||
this.items.add(item);
|
||||
}
|
||||
|
||||
public String getDbType() {
|
||||
return dbType;
|
||||
}
|
||||
|
||||
public void setDbType(String dbType) {
|
||||
this.dbType = dbType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,17 +57,15 @@ public class SQLIfStatement extends SQLStatementImpl {
|
||||
return statements;
|
||||
}
|
||||
|
||||
public void setStatements(List<SQLStatement> statements) {
|
||||
this.statements = statements;
|
||||
}
|
||||
|
||||
public List<ElseIf> getElseIfList() {
|
||||
return elseIfList;
|
||||
public void addStatement(SQLStatement statement) {
|
||||
if (statement != null) {
|
||||
statement.setParent(this);
|
||||
}
|
||||
this.statements.add(statement);
|
||||
}
|
||||
|
||||
|
||||
public void setElseIfList(List<ElseIf> elseIfList) {
|
||||
this.elseIfList = elseIfList;
|
||||
public List<ElseIf> getElseIfList() {
|
||||
return elseIfList;
|
||||
}
|
||||
|
||||
public Else getElseItem() {
|
||||
|
||||
@@ -30,7 +30,7 @@ public abstract class SQLInsertInto extends SQLObjectImpl {
|
||||
protected final List<SQLExpr> columns = new ArrayList<SQLExpr>();
|
||||
protected SQLSelect query;
|
||||
|
||||
protected List<ValuesClause> valuesList = new ArrayList<ValuesClause>();
|
||||
protected final List<ValuesClause> valuesList = new ArrayList<ValuesClause>();
|
||||
|
||||
public SQLInsertInto(){
|
||||
|
||||
@@ -105,7 +105,10 @@ public abstract class SQLInsertInto extends SQLObjectImpl {
|
||||
return valuesList;
|
||||
}
|
||||
|
||||
public void setValuesList(List<ValuesClause> valuesList) {
|
||||
this.valuesList = valuesList;
|
||||
public void addValueCause(ValuesClause valueClause) {
|
||||
if (valueClause != null) {
|
||||
valueClause.setParent(this);
|
||||
}
|
||||
valuesList.add(valueClause);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,4 +48,10 @@ public class SQLLoopStatement extends SQLStatementImpl {
|
||||
this.labelName = labelName;
|
||||
}
|
||||
|
||||
public void addStatement(SQLStatement stmt) {
|
||||
if (stmt != null) {
|
||||
stmt.setParent(this);
|
||||
}
|
||||
statements.add(stmt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +80,14 @@ public class SQLSelect extends SQLObjectImpl {
|
||||
this.query = query;
|
||||
}
|
||||
|
||||
public SQLSelectQueryBlock getQueryBlock() {
|
||||
if (query instanceof SQLSelectQueryBlock) {
|
||||
return (SQLSelectQueryBlock) query;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public SQLOrderBy getOrderBy() {
|
||||
return this.orderBy;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,11 @@ import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLCommentHint;
|
||||
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.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLSetStatement extends SQLStatementImpl {
|
||||
@@ -45,6 +49,11 @@ public class SQLSetStatement extends SQLStatementImpl {
|
||||
this.items.add(new SQLAssignItem(target, value));
|
||||
}
|
||||
|
||||
public static SQLSetStatement plus(SQLName target) {
|
||||
SQLExpr value = new SQLBinaryOpExpr(target.clone(), SQLBinaryOperator.Add, new SQLIntegerExpr(1));
|
||||
return new SQLSetStatement(target, value);
|
||||
}
|
||||
|
||||
public List<SQLAssignItem> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user