mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved sql parser for postgresql
This commit is contained in:
+7
-13
@@ -13,21 +13,20 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.alibaba.druid.sql.dialect.mysql.ast.expr;
|
||||
package com.alibaba.druid.sql.ast.expr;
|
||||
|
||||
import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
import com.alibaba.druid.sql.ast.SQLExprImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class MySqlBinaryExpr extends MySqlExprImpl implements MySqlExpr, SQLLiteralExpr {
|
||||
public class SQLBinaryExpr extends SQLExprImpl implements SQLLiteralExpr {
|
||||
|
||||
private String value;
|
||||
|
||||
public MySqlBinaryExpr(){
|
||||
public SQLBinaryExpr(){
|
||||
|
||||
}
|
||||
|
||||
public MySqlBinaryExpr(String value){
|
||||
public SQLBinaryExpr(String value){
|
||||
super();
|
||||
this.value = value;
|
||||
}
|
||||
@@ -40,12 +39,7 @@ public class MySqlBinaryExpr extends MySqlExprImpl implements MySqlExpr, SQLLite
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
this.accept0((MySqlASTVisitor) visitor);
|
||||
}
|
||||
|
||||
public void accept0(MySqlASTVisitor visitor) {
|
||||
public void accept0(SQLASTVisitor visitor) {
|
||||
visitor.visit(this);
|
||||
|
||||
visitor.endVisit(this);
|
||||
@@ -76,7 +70,7 @@ public class MySqlBinaryExpr extends MySqlExprImpl implements MySqlExpr, SQLLite
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
MySqlBinaryExpr other = (MySqlBinaryExpr) obj;
|
||||
SQLBinaryExpr other = (SQLBinaryExpr) obj;
|
||||
if (value == null) {
|
||||
if (other.value != null) {
|
||||
return false;
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
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;
|
||||
|
||||
@@ -23,10 +24,19 @@ public class SQLAlterTableAlterColumn extends SQLObjectImpl implements SQLAlterT
|
||||
|
||||
private SQLColumnDefinition column;
|
||||
|
||||
private boolean setNotNull;
|
||||
|
||||
private boolean dropNotNull;
|
||||
|
||||
private SQLExpr setDefault;
|
||||
|
||||
private boolean dropDefault;
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, column);
|
||||
acceptChild(visitor, setDefault);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
@@ -39,4 +49,36 @@ public class SQLAlterTableAlterColumn extends SQLObjectImpl implements SQLAlterT
|
||||
this.column = column;
|
||||
}
|
||||
|
||||
public boolean isSetNotNull() {
|
||||
return setNotNull;
|
||||
}
|
||||
|
||||
public void setSetNotNull(boolean setNotNull) {
|
||||
this.setNotNull = setNotNull;
|
||||
}
|
||||
|
||||
public boolean isDropNotNull() {
|
||||
return dropNotNull;
|
||||
}
|
||||
|
||||
public void setDropNotNull(boolean dropNotNull) {
|
||||
this.dropNotNull = dropNotNull;
|
||||
}
|
||||
|
||||
public SQLExpr getSetDefault() {
|
||||
return setDefault;
|
||||
}
|
||||
|
||||
public void setSetDefault(SQLExpr setDefault) {
|
||||
this.setDefault = setDefault;
|
||||
}
|
||||
|
||||
public boolean isDropDefault() {
|
||||
return dropDefault;
|
||||
}
|
||||
|
||||
public void setDropDefault(boolean dropDefault) {
|
||||
this.dropDefault = dropDefault;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ public class SQLAlterTableDropColumnItem extends SQLObjectImpl implements SQLAlt
|
||||
|
||||
private List<SQLName> columns = new ArrayList<SQLName>();
|
||||
|
||||
private boolean cascade = false;
|
||||
|
||||
public SQLAlterTableDropColumnItem(){
|
||||
|
||||
}
|
||||
@@ -42,4 +44,12 @@ public class SQLAlterTableDropColumnItem extends SQLObjectImpl implements SQLAlt
|
||||
return columns;
|
||||
}
|
||||
|
||||
public boolean isCascade() {
|
||||
return cascade;
|
||||
}
|
||||
|
||||
public void setCascade(boolean cascade) {
|
||||
this.cascade = cascade;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
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 SQLAlterTableRename extends SQLObjectImpl implements SQLAlterTableItem {
|
||||
|
||||
protected SQLExpr to;
|
||||
|
||||
public SQLExpr getTo() {
|
||||
return to;
|
||||
}
|
||||
|
||||
public void setTo(SQLExpr to) {
|
||||
this.to = to;
|
||||
to.setParent(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, to);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLOrderBy;
|
||||
import com.alibaba.druid.sql.ast.SQLOrderingSpecification;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAggregateExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
|
||||
@@ -39,7 +40,6 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey.Match;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey.On;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey.Option;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBinaryExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlExtractExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalExpr;
|
||||
@@ -187,7 +187,7 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
} else if (ident.equalsIgnoreCase("b")) {
|
||||
String charValue = lexer.stringVal();
|
||||
lexer.nextToken();
|
||||
expr = new MySqlBinaryExpr(charValue);
|
||||
expr = new SQLBinaryExpr(charValue);
|
||||
|
||||
return primaryRest(expr);
|
||||
} else if (ident.startsWith("_")) {
|
||||
@@ -271,7 +271,7 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
String binaryString = lexer.stringVal();
|
||||
if (intExpr.getNumber().intValue() == 0 && binaryString.startsWith("b")) {
|
||||
lexer.nextToken();
|
||||
expr = new MySqlBinaryExpr(binaryString.substring(1));
|
||||
expr = new SQLBinaryExpr(binaryString.substring(1));
|
||||
|
||||
return primaryRest(expr);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUseIndexHint;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBinaryExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlExtractExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalExpr;
|
||||
@@ -160,10 +159,6 @@ public interface MySqlASTVisitor extends SQLASTVisitor {
|
||||
|
||||
boolean visit(MySqlMatchAgainstExpr x);
|
||||
|
||||
void endVisit(MySqlBinaryExpr x);
|
||||
|
||||
boolean visit(MySqlBinaryExpr x);
|
||||
|
||||
void endVisit(MySqlPrepareStatement x);
|
||||
|
||||
boolean visit(MySqlPrepareStatement x);
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUseIndexHint;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBinaryExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlExtractExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalExpr;
|
||||
@@ -203,17 +202,6 @@ public class MySqlASTVisitorAdapter extends SQLASTVisitorAdapter implements MySq
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlBinaryExpr x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlBinaryExpr x) {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlPrepareStatement x) {
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
|
||||
@@ -35,7 +36,6 @@ import com.alibaba.druid.sql.ast.expr.SQLNumberExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBinaryExpr;
|
||||
import com.alibaba.druid.sql.visitor.SQLEvalVisitor;
|
||||
import com.alibaba.druid.sql.visitor.SQLEvalVisitorUtils;
|
||||
import com.alibaba.druid.sql.visitor.functions.Function;
|
||||
@@ -101,7 +101,8 @@ public class MySqlEvalVisitorImpl extends MySqlASTVisitorAdapter implements SQLE
|
||||
return SQLEvalVisitorUtils.visit(this, x);
|
||||
}
|
||||
|
||||
public boolean visit(MySqlBinaryExpr x) {
|
||||
@Override
|
||||
public boolean visit(SQLBinaryExpr x) {
|
||||
return SQLEvalVisitorUtils.visit(this, x);
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,6 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUseIndexHint;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBinaryExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlExtractExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalExpr;
|
||||
@@ -776,20 +775,6 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlBinaryExpr x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlBinaryExpr x) {
|
||||
print("b'");
|
||||
print(x.getValue());
|
||||
print('\'');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlPrepareStatement x) {
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUseIndexHint;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBinaryExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlExtractExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalExpr;
|
||||
@@ -304,17 +303,6 @@ public class MySqlSchemaStatVisitor extends SchemaStatVisitor implements MySqlAS
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlBinaryExpr x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlBinaryExpr x) {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlPrepareStatement x) {
|
||||
|
||||
|
||||
-41
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright 1999-2011 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.dialect.oracle.ast.stmt;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
|
||||
|
||||
public class OracleAlterTableRenameTo extends OracleAlterTableItem {
|
||||
|
||||
private SQLExpr to;
|
||||
|
||||
@Override
|
||||
public void accept0(OracleASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, to);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public SQLExpr getTo() {
|
||||
return to;
|
||||
}
|
||||
|
||||
public void setTo(SQLExpr to) {
|
||||
this.to = to;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,8 +33,6 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropColumnItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLDropSequenceStatement;
|
||||
@@ -61,7 +59,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstain
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableRenameTo;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition.NestedTablePartitionSpec;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition.TableSpaceItem;
|
||||
@@ -914,27 +911,6 @@ public class OracleStatementParser extends SQLStatementParser {
|
||||
return stmt;
|
||||
}
|
||||
|
||||
private SQLAlterTableItem parseAlterTableRename() {
|
||||
acceptIdentifier("RENAME");
|
||||
|
||||
if (lexer.token() == Token.COLUMN) {
|
||||
lexer.nextToken();
|
||||
SQLAlterTableRenameColumn renameColumn = new SQLAlterTableRenameColumn();
|
||||
renameColumn.setColumn(this.exprParser.name());
|
||||
accept(Token.TO);
|
||||
renameColumn.setTo(this.exprParser.name());
|
||||
return renameColumn;
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.TO) {
|
||||
lexer.nextToken();
|
||||
OracleAlterTableRenameTo item = new OracleAlterTableRenameTo();
|
||||
item.setTo(this.exprParser.name());
|
||||
return item;
|
||||
}
|
||||
throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal());
|
||||
}
|
||||
|
||||
public void parseAlterDrop(SQLAlterTableStatement stmt) {
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.CONSTRAINT) {
|
||||
|
||||
@@ -60,7 +60,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstain
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableRenameTo;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableTruncatePartition;
|
||||
@@ -453,10 +452,6 @@ public interface OracleASTVisitor extends SQLASTVisitor {
|
||||
|
||||
void endVisit(OracleAlterTableAddConstaint x);
|
||||
|
||||
boolean visit(OracleAlterTableRenameTo x);
|
||||
|
||||
void endVisit(OracleAlterTableRenameTo x);
|
||||
|
||||
boolean visit(OraclePrimaryKey x);
|
||||
|
||||
void endVisit(OraclePrimaryKey x);
|
||||
|
||||
-11
@@ -68,7 +68,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstain
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableRenameTo;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableTruncatePartition;
|
||||
@@ -1021,16 +1020,6 @@ public class OracleASTVisitorAdapter extends SQLASTVisitorAdapter implements Ora
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(OracleAlterTableRenameTo x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(OracleAlterTableRenameTo x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(OracleStorageClause x) {
|
||||
return true;
|
||||
|
||||
@@ -98,7 +98,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstain
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableRenameTo;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition.NestedTablePartitionSpec;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition.TableSpaceItem;
|
||||
@@ -2489,18 +2488,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(OracleAlterTableRenameTo x) {
|
||||
print("RENAME TO ");
|
||||
x.getTo().accept(this);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(OracleAlterTableRenameTo x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(OracleStorageClause x) {
|
||||
print("STORAGE (");
|
||||
|
||||
-11
@@ -91,7 +91,6 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableAddConstain
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableDropPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableModify;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableMoveTablespace;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableRenameTo;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableSplitPartition;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleAlterTableTruncatePartition;
|
||||
@@ -1421,16 +1420,6 @@ public class OracleSchemaStatVisitor extends SchemaStatVisitor implements Oracle
|
||||
this.endVisit((SQLCreateTableStatement) x);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(OracleAlterTableRenameTo x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(OracleAlterTableRenameTo x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(OracleStorageClause x) {
|
||||
return false;
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package com.alibaba.druid.sql.dialect.postgresql.ast.stmt;
|
||||
|
||||
|
||||
public class PGAlterTableAlterColumnSetNotNull {
|
||||
|
||||
}
|
||||
@@ -17,6 +17,7 @@ package com.alibaba.druid.sql.dialect.postgresql.parser;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLDataType;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLTimestampExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr;
|
||||
@@ -216,6 +217,12 @@ public class PGExprParser extends SQLExprParser {
|
||||
PGLineSegmentsExpr lseg = new PGLineSegmentsExpr();
|
||||
lseg.setValue(value);
|
||||
return primaryRest(lseg);
|
||||
} else if (ident.equalsIgnoreCase("b") && lexer.token() == Token.LITERAL_CHARS) {
|
||||
String charValue = lexer.stringVal();
|
||||
lexer.nextToken();
|
||||
expr = new SQLBinaryExpr(charValue);
|
||||
|
||||
return primaryRest(expr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+38
-1
@@ -22,6 +22,8 @@ import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCurrentOfCursorExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelect;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLTableSource;
|
||||
@@ -287,7 +289,7 @@ public class PGSQLStatementParser extends SQLStatementParser {
|
||||
stmt.setWith(with);
|
||||
return stmt;
|
||||
}
|
||||
|
||||
|
||||
if (lexer.token() == Token.DELETE) {
|
||||
PGDeleteStatement stmt = this.parseDeleteStatement();
|
||||
stmt.setWith(with);
|
||||
@@ -295,4 +297,39 @@ public class PGSQLStatementParser extends SQLStatementParser {
|
||||
}
|
||||
throw new ParserException("TODO");
|
||||
}
|
||||
|
||||
protected SQLAlterTableAlterColumn parseAlterColumn() {
|
||||
accept(Token.COLUMN);
|
||||
|
||||
SQLColumnDefinition column = this.exprParser.parseColumn();
|
||||
|
||||
SQLAlterTableAlterColumn alterColumn = new SQLAlterTableAlterColumn();
|
||||
alterColumn.setColumn(column);
|
||||
|
||||
if (column.getDataType() == null && column.getConstraints().size() == 0) {
|
||||
if (lexer.token() == Token.SET) {
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.NOT) {
|
||||
lexer.nextToken();
|
||||
accept(Token.NULL);
|
||||
alterColumn.setSetNotNull(true);
|
||||
} else {
|
||||
accept(Token.DEFAULT);
|
||||
SQLExpr defaultValue = this.exprParser.expr();
|
||||
alterColumn.setSetDefault(defaultValue);
|
||||
}
|
||||
} else if (lexer.token() == Token.DROP) {
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.NOT) {
|
||||
lexer.nextToken();
|
||||
accept(Token.NULL);
|
||||
alterColumn.setDropNotNull(true);
|
||||
} else {
|
||||
accept(Token.DEFAULT);
|
||||
alterColumn.setDropDefault(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
return alterColumn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
|
||||
@@ -144,4 +145,9 @@ public class PGEvalVisitor extends PGASTVisitorAdapter implements SQLEvalVisitor
|
||||
public boolean visit(SQLIdentifierExpr x) {
|
||||
return SQLEvalVisitorUtils.visit(this, x);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLBinaryExpr x) {
|
||||
return SQLEvalVisitorUtils.visit(this, x);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.alibaba.druid.sql.dialect.postgresql.visitor;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLSetQuantifier;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.ast.PGWithClause;
|
||||
@@ -645,4 +646,13 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor
|
||||
public void endVisit(PGLineSegmentsExpr x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLBinaryExpr x) {
|
||||
print("B'");
|
||||
print(x.getValue());
|
||||
print('\'');
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1453,8 +1453,11 @@ public class SQLExprParser extends SQLParser {
|
||||
public SQLColumnDefinition parseColumn() {
|
||||
SQLColumnDefinition column = createColumnDefinition();
|
||||
column.setName(name());
|
||||
column.setDataType(parseDataType());
|
||||
|
||||
|
||||
if(lexer.token() != Token.SET //
|
||||
&& lexer.token() != Token.DROP) {
|
||||
column.setDataType(parseDataType());
|
||||
}
|
||||
return parseColumnRest(column);
|
||||
}
|
||||
|
||||
@@ -1469,7 +1472,7 @@ public class SQLExprParser extends SQLParser {
|
||||
column.setDefaultExpr(bitOr());
|
||||
return parseColumnRest(column);
|
||||
}
|
||||
|
||||
|
||||
if (lexer.token() == Token.NOT) {
|
||||
lexer.nextToken();
|
||||
accept(Token.NULL);
|
||||
@@ -1698,9 +1701,12 @@ public class SQLExprParser extends SQLParser {
|
||||
|
||||
fk.setReferencedTableName(this.name());
|
||||
|
||||
accept(Token.LPAREN);
|
||||
this.names(fk.getReferencedColumns());
|
||||
accept(Token.RPAREN);
|
||||
if (lexer.token() == Token.LPAREN) {
|
||||
lexer.nextToken();
|
||||
this.names(fk.getReferencedColumns(), fk);
|
||||
accept(Token.RPAREN);
|
||||
}
|
||||
|
||||
return fk;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCallStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCheck;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCommentStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLConstraint;
|
||||
@@ -48,6 +49,9 @@ import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement.TriggerEvent;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateTriggerStatement.TriggerType;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCreateViewStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLDropDatabaseStatement;
|
||||
@@ -743,6 +747,22 @@ public class SQLStatementParser extends SQLParser {
|
||||
} else if (lexer.token() == Token.IDENTIFIER) {
|
||||
SQLAlterTableAddColumn item = parseAlterTableAddColumn();
|
||||
stmt.getItems().add(item);
|
||||
} else if (lexer.token() == Token.COLUMN) {
|
||||
lexer.nextToken();
|
||||
SQLAlterTableAddColumn item = parseAlterTableAddColumn();
|
||||
stmt.getItems().add(item);
|
||||
} else if (lexer.token() == Token.CHECK) {
|
||||
SQLCheck check = this.exprParser.parseCheck();
|
||||
SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(check);
|
||||
stmt.getItems().add(item);
|
||||
} else if (lexer.token() == Token.CONSTRAINT) {
|
||||
SQLConstraint constraint = this.exprParser.parseConstaint();
|
||||
SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(constraint);
|
||||
stmt.getItems().add(item);
|
||||
} else if (lexer.token() == Token.FOREIGN) {
|
||||
SQLConstraint constraint = this.exprParser.parseForeignKey();
|
||||
SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(constraint);
|
||||
stmt.getItems().add(item);
|
||||
} else {
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
}
|
||||
@@ -774,10 +794,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
} else if (lexer.token() == Token.ALTER) {
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.COLUMN) {
|
||||
lexer.nextToken();
|
||||
SQLColumnDefinition column = this.exprParser.parseColumn();
|
||||
SQLAlterTableAlterColumn alterColumn = new SQLAlterTableAlterColumn();
|
||||
alterColumn.setColumn(column);
|
||||
SQLAlterTableAlterColumn alterColumn = parseAlterColumn();
|
||||
stmt.getItems().add(alterColumn);
|
||||
} else {
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
@@ -792,6 +809,8 @@ public class SQLStatementParser extends SQLParser {
|
||||
addCheck.setWithNoCheck(true);
|
||||
addCheck.setConstraint(check);
|
||||
stmt.getItems().add(addCheck);
|
||||
} else if (identifierEquals("RENAME")) {
|
||||
stmt.getItems().add(parseAlterTableRename());
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
@@ -801,6 +820,37 @@ public class SQLStatementParser extends SQLParser {
|
||||
}
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
}
|
||||
|
||||
protected SQLAlterTableItem parseAlterTableRename() {
|
||||
acceptIdentifier("RENAME");
|
||||
|
||||
if (lexer.token() == Token.COLUMN) {
|
||||
lexer.nextToken();
|
||||
SQLAlterTableRenameColumn renameColumn = new SQLAlterTableRenameColumn();
|
||||
renameColumn.setColumn(this.exprParser.name());
|
||||
accept(Token.TO);
|
||||
renameColumn.setTo(this.exprParser.name());
|
||||
return renameColumn;
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.TO) {
|
||||
lexer.nextToken();
|
||||
SQLAlterTableRename item = new SQLAlterTableRename();
|
||||
item.setTo(this.exprParser.name());
|
||||
return item;
|
||||
}
|
||||
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
}
|
||||
|
||||
protected SQLAlterTableAlterColumn parseAlterColumn() {
|
||||
lexer.nextToken();
|
||||
SQLColumnDefinition column = this.exprParser.parseColumn();
|
||||
|
||||
SQLAlterTableAlterColumn alterColumn = new SQLAlterTableAlterColumn();
|
||||
alterColumn.setColumn(column);
|
||||
return alterColumn;
|
||||
}
|
||||
|
||||
public void parseAlterDrop(SQLAlterTableStatement stmt) {
|
||||
lexer.nextToken();
|
||||
@@ -814,6 +864,12 @@ public class SQLStatementParser extends SQLParser {
|
||||
lexer.nextToken();
|
||||
SQLAlterTableDropColumnItem item = new SQLAlterTableDropColumnItem();
|
||||
this.exprParser.names(item.getColumns());
|
||||
|
||||
if(lexer.token == Token.CASCADE) {
|
||||
item.setCascade(true);
|
||||
lexer.nextToken();
|
||||
}
|
||||
|
||||
stmt.getItems().add(item);
|
||||
} else {
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAllExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAnyExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
|
||||
@@ -80,6 +81,7 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
|
||||
@@ -1391,6 +1393,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
public boolean visit(SQLAlterTableDropColumnItem x) {
|
||||
print("DROP COLUMN ");
|
||||
this.printAndAccept(x.getColumns(), ", ");
|
||||
|
||||
if (x.isCascade()) {
|
||||
print(" CASCADE");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1576,6 +1582,21 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
public boolean visit(SQLAlterTableAlterColumn x) {
|
||||
print("ALTER COLUMN ");
|
||||
x.getColumn().accept(this);
|
||||
|
||||
if (x.isSetNotNull()) { // postgresql
|
||||
print(" SET NOT NULL");
|
||||
}
|
||||
if (x.isDropNotNull()) { // postgresql
|
||||
print(" DROP NOT NULL");
|
||||
}
|
||||
if (x.getSetDefault() != null) { // postgresql
|
||||
print(" SET DEFAULT ");
|
||||
x.getSetDefault().accept(this);
|
||||
}
|
||||
if (x.isDropDefault()) { // postgresql
|
||||
print(" DROP DEFAULT");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1746,9 +1767,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
print(" REFERENCES ");
|
||||
x.getReferencedTableName().accept(this);
|
||||
|
||||
print(" (");
|
||||
printAndAccept(x.getReferencedColumns(), ", ");
|
||||
print(")");
|
||||
if (x.getReferencedColumns().size() > 0) {
|
||||
print(" (");
|
||||
printAndAccept(x.getReferencedColumns(), ", ");
|
||||
print(")");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2073,4 +2096,20 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLBinaryExpr x) {
|
||||
print("b'");
|
||||
print(x.getValue());
|
||||
print('\'');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLAlterTableRename x) {
|
||||
print("RENAME TO ");
|
||||
x.getTo().accept(this);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAllExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAnyExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
|
||||
@@ -64,6 +65,7 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropIndex;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
|
||||
@@ -555,4 +557,12 @@ public interface SQLASTVisitor {
|
||||
|
||||
boolean visit(SQLRevokeStatement x);
|
||||
|
||||
void endVisit(SQLBinaryExpr x);
|
||||
|
||||
boolean visit(SQLBinaryExpr x);
|
||||
|
||||
void endVisit(SQLAlterTableRename x);
|
||||
|
||||
boolean visit(SQLAlterTableRename x);
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAllExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLAnyExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
|
||||
@@ -65,6 +66,7 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropIndex;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropPrimaryKey;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableKeys;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRenameColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAssignItem;
|
||||
@@ -1086,4 +1088,24 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLBinaryExpr x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLBinaryExpr x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLAlterTableRename x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLAlterTableRename x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCaseExpr;
|
||||
@@ -151,4 +152,8 @@ public class SQLEvalVisitorImpl extends SQLASTVisitorAdapter implements SQLEvalV
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLBinaryExpr x) {
|
||||
return SQLEvalVisitorUtils.visit(this, x);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.alibaba.druid.DruidRuntimeException;
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObject;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
|
||||
@@ -39,7 +40,6 @@ import com.alibaba.druid.sql.ast.statement.SQLSelect;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
|
||||
import com.alibaba.druid.sql.dialect.db2.visitor.DB2EvalVisitor;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBinaryExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlEvalVisitorImpl;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleEvalVisitor;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.visitor.PGEvalVisitor;
|
||||
@@ -582,7 +582,7 @@ public class SQLEvalVisitorUtils {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean visit(SQLEvalVisitor visitor, MySqlBinaryExpr x) {
|
||||
public static boolean visit(SQLEvalVisitor visitor, SQLBinaryExpr x) {
|
||||
String text = x.getValue();
|
||||
|
||||
long[] words = new long[text.length() / 64 + 1];
|
||||
|
||||
@@ -45,6 +45,7 @@ import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDropForeignKey;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableEnableConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableRename;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCallStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLCheck;
|
||||
@@ -1269,7 +1270,7 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter {
|
||||
@Override
|
||||
public boolean visit(SQLForeignKeyImpl x) {
|
||||
|
||||
for (SQLName column : x.getReferencedColumns()) {
|
||||
for (SQLName column : x.getReferencingColumns()) {
|
||||
column.accept(this);
|
||||
}
|
||||
|
||||
@@ -1350,4 +1351,9 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter {
|
||||
public boolean visit(SQLDropProcedureStatement x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLAlterTableRename x) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user