improved sql parser.

This commit is contained in:
wenshao
2017-05-31 15:14:05 +08:00
parent fd3da2613d
commit 969e878ca9
44 changed files with 684 additions and 569 deletions
@@ -0,0 +1,39 @@
package com.alibaba.druid.sql.ast;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
/**
* Created by wenshao on 29/05/2017.
*/
public class SQLArgument extends SQLObjectImpl {
private SQLParameter.ParameterType type;
private SQLExpr expr;
@Override
protected void accept0(SQLASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, expr);
}
visitor.endVisit(this);
}
public SQLParameter.ParameterType getType() {
return type;
}
public SQLExpr getExpr() {
return expr;
}
public void setType(SQLParameter.ParameterType type) {
this.type = type;
}
public void setExpr(SQLExpr expr) {
if (expr != null) {
expr.setParent(this);
}
this.expr = expr;
}
}
@@ -0,0 +1,118 @@
/*
* Copyright 1999-2017 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.druid.sql.ast.statement;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLStatementImpl;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
public class SQLCommitStatement extends SQLStatementImpl {
// oracle
private boolean write;
private Boolean wait;
private Boolean immediate;
// mysql
private boolean work = false;
private Boolean chain;
private Boolean release;
// sql server
private SQLExpr transactionName;
private SQLExpr delayedDurability;
public void accept0(SQLASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, transactionName);
acceptChild(visitor, delayedDurability);
}
visitor.endVisit(this);
}
// oracle
public boolean isWrite() {
return write;
}
public void setWrite(boolean write) {
this.write = write;
}
public Boolean getWait() {
return wait;
}
public void setWait(Boolean wait) {
this.wait = wait;
}
public Boolean getImmediate() {
return immediate;
}
public void setImmediate(Boolean immediate) {
this.immediate = immediate;
}
// mysql
public Boolean getChain() {
return chain;
}
public void setChain(Boolean chain) {
this.chain = chain;
}
public Boolean getRelease() {
return release;
}
public void setRelease(Boolean release) {
this.release = release;
}
public boolean isWork() {
return work;
}
public void setWork(boolean work) {
this.work = work;
}
// sql server
public SQLExpr getTransactionName() {
return transactionName;
}
public void setTransactionName(SQLExpr transactionName) {
if (transactionName != null) {
transactionName.setParent(this);
}
this.transactionName = transactionName;
}
public SQLExpr getDelayedDurability() {
return delayedDurability;
}
public void setDelayedDurability(SQLExpr delayedDurability) {
if (delayedDurability != null) {
delayedDurability.setParent(this);
}
this.delayedDurability = delayedDurability;
}
}