mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
sql paser refactor SQLColumnDefinition
This commit is contained in:
@@ -15,29 +15,52 @@
|
||||
*/
|
||||
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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SQLColumnDefinition extends SQLObjectImpl implements SQLTableElement {
|
||||
|
||||
protected SQLName name;
|
||||
protected SQLDataType dataType;
|
||||
protected SQLExpr defaultExpr;
|
||||
protected final List<SQLColumnConstraint> constraints = new ArrayList<SQLColumnConstraint>(0);
|
||||
protected SQLExpr comment;
|
||||
protected final List<SQLColumnConstraint> constraints = new ArrayList<SQLColumnConstraint>(0);
|
||||
protected SQLExpr comment;
|
||||
|
||||
protected Boolean enable;
|
||||
|
||||
// for mysql
|
||||
protected boolean autoIncrement = false;
|
||||
protected SQLExpr onUpdate;
|
||||
protected SQLExpr storage;
|
||||
protected SQLExpr charsetExpr;
|
||||
protected SQLExpr asExpr;
|
||||
protected boolean sorted = false;
|
||||
protected boolean virtual = false;
|
||||
|
||||
protected Identity identity;
|
||||
|
||||
public SQLColumnDefinition(){
|
||||
|
||||
}
|
||||
|
||||
public Identity getIdentity() {
|
||||
return identity;
|
||||
}
|
||||
|
||||
// for sqlserver
|
||||
public void setIdentity(Identity identity) {
|
||||
if (identity != null) {
|
||||
identity.setParent(this);
|
||||
}
|
||||
this.identity = identity;
|
||||
}
|
||||
|
||||
public Boolean getEnable() {
|
||||
return enable;
|
||||
}
|
||||
@@ -107,4 +130,108 @@ public class SQLColumnDefinition extends SQLObjectImpl implements SQLTableElemen
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public boolean isVirtual() {
|
||||
return virtual;
|
||||
}
|
||||
|
||||
public void setVirtual(boolean virtual) {
|
||||
this.virtual = virtual;
|
||||
}
|
||||
|
||||
public boolean isSorted() {
|
||||
return sorted;
|
||||
}
|
||||
|
||||
public void setSorted(boolean sorted) {
|
||||
this.sorted = sorted;
|
||||
}
|
||||
|
||||
public SQLExpr getCharsetExpr() {
|
||||
return charsetExpr;
|
||||
}
|
||||
|
||||
public void setCharsetExpr(SQLExpr charsetExpr) {
|
||||
if (charsetExpr != null) {
|
||||
charsetExpr.setParent(this);
|
||||
}
|
||||
this.charsetExpr = charsetExpr;
|
||||
}
|
||||
|
||||
public SQLExpr getAsExpr() {
|
||||
return asExpr;
|
||||
}
|
||||
|
||||
public void setAsExpr(SQLExpr asExpr) {
|
||||
if (charsetExpr != null) {
|
||||
charsetExpr.setParent(this);
|
||||
}
|
||||
this.asExpr = asExpr;
|
||||
}
|
||||
|
||||
public boolean isAutoIncrement() {
|
||||
return autoIncrement;
|
||||
}
|
||||
|
||||
public void setAutoIncrement(boolean autoIncrement) {
|
||||
this.autoIncrement = autoIncrement;
|
||||
}
|
||||
|
||||
public SQLExpr getOnUpdate() {
|
||||
return onUpdate;
|
||||
}
|
||||
|
||||
public void setOnUpdate(SQLExpr onUpdate) {
|
||||
this.onUpdate = onUpdate;
|
||||
}
|
||||
|
||||
public SQLExpr getStorage() {
|
||||
return storage;
|
||||
}
|
||||
|
||||
public void setStorage(SQLExpr storage) {
|
||||
this.storage = storage;
|
||||
}
|
||||
|
||||
public static class Identity extends SQLObjectImpl {
|
||||
|
||||
private Integer seed;
|
||||
private Integer increment;
|
||||
|
||||
private boolean notForReplication;
|
||||
|
||||
public Identity(){
|
||||
|
||||
}
|
||||
|
||||
public Integer getSeed() {
|
||||
return seed;
|
||||
}
|
||||
|
||||
public void setSeed(Integer seed) {
|
||||
this.seed = seed;
|
||||
}
|
||||
|
||||
public Integer getIncrement() {
|
||||
return increment;
|
||||
}
|
||||
|
||||
public void setIncrement(Integer increment) {
|
||||
this.increment = increment;
|
||||
}
|
||||
|
||||
public boolean isNotForReplication() {
|
||||
return notForReplication;
|
||||
}
|
||||
|
||||
public void setNotForReplication(boolean notForReplication) {
|
||||
this.notForReplication = notForReplication;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept0(SQLASTVisitor visitor) {
|
||||
visitor.visit(this);
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
-67
@@ -1,67 +0,0 @@
|
||||
/*
|
||||
* Copyright 1999-2101 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.mysql.ast.statement;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
|
||||
public class MySqlSQLColumnDefinition extends SQLColumnDefinition {
|
||||
|
||||
private boolean autoIncrement = false;
|
||||
|
||||
private SQLExpr onUpdate;
|
||||
|
||||
private SQLExpr storage;
|
||||
|
||||
private SQLExpr charsetExpr;
|
||||
|
||||
|
||||
public MySqlSQLColumnDefinition(){
|
||||
|
||||
}
|
||||
|
||||
public SQLExpr getCharsetExpr() {
|
||||
return charsetExpr;
|
||||
}
|
||||
|
||||
public void setCharsetExpr(SQLExpr charsetExpr) {
|
||||
this.charsetExpr = charsetExpr;
|
||||
}
|
||||
|
||||
public boolean isAutoIncrement() {
|
||||
return autoIncrement;
|
||||
}
|
||||
|
||||
public void setAutoIncrement(boolean autoIncrement) {
|
||||
this.autoIncrement = autoIncrement;
|
||||
}
|
||||
|
||||
public SQLExpr getOnUpdate() {
|
||||
return onUpdate;
|
||||
}
|
||||
|
||||
public void setOnUpdate(SQLExpr onUpdate) {
|
||||
this.onUpdate = onUpdate;
|
||||
}
|
||||
|
||||
public SQLExpr getStorage() {
|
||||
return storage;
|
||||
}
|
||||
|
||||
public void setStorage(SQLExpr storage) {
|
||||
this.storage = storage;
|
||||
}
|
||||
}
|
||||
@@ -20,8 +20,8 @@ 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.SQLBinaryExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
|
||||
@@ -45,11 +45,10 @@ import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlExtractExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlIntervalUnit;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlMatchAgainstExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlOrderingExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlMatchAgainstExpr.SearchModifier;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlOrderingExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlOutFileExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlUserName;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.Limit;
|
||||
import com.alibaba.druid.sql.parser.Lexer;
|
||||
@@ -517,7 +516,7 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
}
|
||||
|
||||
public SQLColumnDefinition parseColumn() {
|
||||
MySqlSQLColumnDefinition column = new MySqlSQLColumnDefinition();
|
||||
SQLColumnDefinition column = new SQLColumnDefinition();
|
||||
column.setName(name());
|
||||
column.setDataType(parseDataType());
|
||||
|
||||
@@ -529,7 +528,7 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
lexer.nextToken();
|
||||
accept(Token.UPDATE);
|
||||
SQLExpr expr = this.expr();
|
||||
((MySqlSQLColumnDefinition) column).setOnUpdate(expr);
|
||||
column.setOnUpdate(expr);
|
||||
}
|
||||
if (identifierEquals("CHARSET")) {
|
||||
lexer.nextToken();
|
||||
@@ -541,14 +540,12 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
charSetCollateExpr.setCollate(lexer.stringVal());
|
||||
lexer.nextToken();
|
||||
}
|
||||
((MySqlSQLColumnDefinition) column).setCharsetExpr(charSetCollateExpr);
|
||||
column.setCharsetExpr(charSetCollateExpr);
|
||||
return parseColumnRest(column);
|
||||
}
|
||||
if (identifierEquals("AUTO_INCREMENT")) {
|
||||
lexer.nextToken();
|
||||
if (column instanceof MySqlSQLColumnDefinition) {
|
||||
((MySqlSQLColumnDefinition) column).setAutoIncrement(true);
|
||||
}
|
||||
column.setAutoIncrement(true);
|
||||
return parseColumnRest(column);
|
||||
}
|
||||
|
||||
@@ -563,9 +560,25 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
if (identifierEquals("STORAGE")) {
|
||||
lexer.nextToken();
|
||||
SQLExpr expr = expr();
|
||||
if (column instanceof MySqlSQLColumnDefinition) {
|
||||
((MySqlSQLColumnDefinition) column).setStorage(expr);
|
||||
}
|
||||
column.setStorage(expr);
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.AS) {
|
||||
lexer.nextToken();
|
||||
accept(Token.LPAREN);
|
||||
SQLExpr expr = expr();
|
||||
column.setAsExpr(expr);
|
||||
accept(Token.RPAREN);
|
||||
}
|
||||
|
||||
if (identifierEquals("STORED")) {
|
||||
lexer.nextToken();
|
||||
column.setSorted(true);
|
||||
}
|
||||
|
||||
if (identifierEquals("VIRTUAL")) {
|
||||
lexer.nextToken();
|
||||
column.setVirtual(true);
|
||||
}
|
||||
|
||||
super.parseColumnRest(column);
|
||||
|
||||
@@ -103,7 +103,6 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRenameTableStateme
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlReplaceStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlResetStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRollbackStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.Limit;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSetCharSetStatement;
|
||||
@@ -295,19 +294,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
}
|
||||
|
||||
public boolean visit(SQLColumnDefinition x) {
|
||||
MySqlSQLColumnDefinition mysqlColumn = null;
|
||||
|
||||
if (x instanceof MySqlSQLColumnDefinition) {
|
||||
mysqlColumn = (MySqlSQLColumnDefinition) x;
|
||||
}
|
||||
|
||||
x.getName().accept(this);
|
||||
print(' ');
|
||||
x.getDataType().accept(this);
|
||||
|
||||
if (mysqlColumn != null && mysqlColumn.getCharsetExpr() != null) {
|
||||
if (x.getCharsetExpr() != null) {
|
||||
print0(ucase ? " CHARSET " : " charset ");
|
||||
mysqlColumn.getCharsetExpr().accept(this);
|
||||
x.getCharsetExpr().accept(this);
|
||||
}
|
||||
|
||||
for (SQLColumnConstraint item : x.getConstraints()) {
|
||||
@@ -324,18 +317,18 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
}
|
||||
}
|
||||
|
||||
if (mysqlColumn != null && mysqlColumn.getStorage() != null) {
|
||||
if (x.getStorage() != null) {
|
||||
print0(ucase ? " STORAGE " : " storage ");
|
||||
mysqlColumn.getStorage().accept(this);
|
||||
x.getStorage().accept(this);
|
||||
}
|
||||
|
||||
if (mysqlColumn != null && mysqlColumn.getOnUpdate() != null) {
|
||||
if (x.getOnUpdate() != null) {
|
||||
print0(ucase ? " ON UPDATE " : " on update ");
|
||||
|
||||
mysqlColumn.getOnUpdate().accept(this);
|
||||
x.getOnUpdate().accept(this);
|
||||
}
|
||||
|
||||
if (mysqlColumn != null && mysqlColumn.isAutoIncrement()) {
|
||||
if (x.isAutoIncrement()) {
|
||||
print0(ucase ? " AUTO_INCREMENT" : " auto_increment");
|
||||
}
|
||||
|
||||
@@ -343,6 +336,16 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
print0(ucase ? " COMMENT " : " comment ");
|
||||
x.getComment().accept(this);
|
||||
}
|
||||
|
||||
if (x.getAsExpr() != null) {
|
||||
print0(ucase ? " AS (" : " as (");
|
||||
x.getAsExpr().accept(this);
|
||||
print(')');
|
||||
}
|
||||
|
||||
if (x.isSorted()) {
|
||||
print0(ucase ? " SORTED" : " sorted");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
-100
@@ -1,100 +0,0 @@
|
||||
/*
|
||||
* Copyright 1999-2101 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.sqlserver.ast;
|
||||
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerASTVisitor;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLServerColumnDefinition extends SQLColumnDefinition implements SQLServerObject {
|
||||
|
||||
private Identity identity;
|
||||
|
||||
public SQLServerColumnDefinition(){
|
||||
|
||||
}
|
||||
|
||||
public Identity getIdentity() {
|
||||
return identity;
|
||||
}
|
||||
|
||||
public void setIdentity(Identity identity) {
|
||||
if (identity != null) {
|
||||
identity.setParent(this);
|
||||
}
|
||||
this.identity = identity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
this.accept0((SQLServerASTVisitor) visitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept0(SQLServerASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
this.acceptChild(visitor, name);
|
||||
this.acceptChild(visitor, dataType);
|
||||
this.acceptChild(visitor, defaultExpr);
|
||||
this.acceptChild(visitor, constraints);
|
||||
this.acceptChild(visitor, identity);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public static class Identity extends SQLServerObjectImpl {
|
||||
|
||||
private Integer seed;
|
||||
private Integer increment;
|
||||
|
||||
private boolean notForReplication;
|
||||
|
||||
public Identity(){
|
||||
|
||||
}
|
||||
|
||||
public Integer getSeed() {
|
||||
return seed;
|
||||
}
|
||||
|
||||
public void setSeed(Integer seed) {
|
||||
this.seed = seed;
|
||||
}
|
||||
|
||||
public Integer getIncrement() {
|
||||
return increment;
|
||||
}
|
||||
|
||||
public void setIncrement(Integer increment) {
|
||||
this.increment = increment;
|
||||
}
|
||||
|
||||
public boolean isNotForReplication() {
|
||||
return notForReplication;
|
||||
}
|
||||
|
||||
public void setNotForReplication(boolean notForReplication) {
|
||||
this.notForReplication = notForReplication;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept0(SQLServerASTVisitor visitor) {
|
||||
visitor.visit(this);
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+3
-5
@@ -26,7 +26,6 @@ import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerOutput;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerTop;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.expr.SQLServerObjectReferenceExpr;
|
||||
@@ -192,7 +191,7 @@ public class SQLServerExprParser extends SQLExprParser {
|
||||
}
|
||||
|
||||
public SQLColumnDefinition createColumnDefinition() {
|
||||
SQLColumnDefinition column = new SQLServerColumnDefinition();
|
||||
SQLColumnDefinition column = new SQLColumnDefinition();
|
||||
return column;
|
||||
}
|
||||
|
||||
@@ -206,7 +205,7 @@ public class SQLServerExprParser extends SQLExprParser {
|
||||
SQLIntegerExpr increment = (SQLIntegerExpr) this.primary();
|
||||
accept(Token.RPAREN);
|
||||
|
||||
SQLServerColumnDefinition.Identity identity = new SQLServerColumnDefinition.Identity();
|
||||
SQLColumnDefinition.Identity identity = new SQLColumnDefinition.Identity();
|
||||
identity.setSeed((Integer) seed.getNumber());
|
||||
identity.setIncrement((Integer) increment.getNumber());
|
||||
|
||||
@@ -223,8 +222,7 @@ public class SQLServerExprParser extends SQLExprParser {
|
||||
}
|
||||
}
|
||||
|
||||
SQLServerColumnDefinition sqlSreverColumn = (SQLServerColumnDefinition) column;
|
||||
sqlSreverColumn.setIdentity(identity);
|
||||
column.setIdentity(identity);
|
||||
}
|
||||
|
||||
return super.parseColumnRest(column);
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.alibaba.druid.sql.dialect.sqlserver.visitor;
|
||||
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerOutput;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelect;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
|
||||
@@ -55,14 +54,6 @@ public interface SQLServerASTVisitor extends SQLASTVisitor {
|
||||
|
||||
void endVisit(SQLServerUpdateStatement x);
|
||||
|
||||
boolean visit(SQLServerColumnDefinition x);
|
||||
|
||||
void endVisit(SQLServerColumnDefinition x);
|
||||
|
||||
boolean visit(SQLServerColumnDefinition.Identity x);
|
||||
|
||||
void endVisit(SQLServerColumnDefinition.Identity x);
|
||||
|
||||
boolean visit(SQLServerExecStatement x);
|
||||
|
||||
void endVisit(SQLServerExecStatement x);
|
||||
|
||||
-21
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.alibaba.druid.sql.dialect.sqlserver.visitor;
|
||||
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerOutput;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelect;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
|
||||
@@ -85,26 +84,6 @@ public class SQLServerASTVisitorAdapter extends SQLASTVisitorAdapter implements
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLServerColumnDefinition.Identity x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLServerColumnDefinition.Identity x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLServerColumnDefinition x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLServerColumnDefinition x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLServerExecStatement x) {
|
||||
return true;
|
||||
|
||||
+1
-30
@@ -24,8 +24,6 @@ import com.alibaba.druid.sql.ast.statement.SQLColumnConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLGrantStatement;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition.Identity;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerOutput;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelect;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
|
||||
@@ -275,22 +273,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(Identity x) {
|
||||
print0(ucase ? "IDENTITY (" : "identity (");
|
||||
print(x.getSeed());
|
||||
print0(", ");
|
||||
print(x.getIncrement());
|
||||
print(')');
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(Identity x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLServerColumnDefinition x) {
|
||||
public boolean visit(SQLColumnDefinition x) {
|
||||
x.getName().accept(this);
|
||||
|
||||
if (x.getDataType() != null) {
|
||||
@@ -321,18 +304,6 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLServerColumnDefinition x) {
|
||||
|
||||
}
|
||||
|
||||
public boolean visit(SQLColumnDefinition x) {
|
||||
if (x instanceof SQLServerColumnDefinition) {
|
||||
return visit((SQLServerColumnDefinition) x);
|
||||
}
|
||||
return super.visit(x);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLServerExecStatement x) {
|
||||
print0(ucase ? "EXEC " : "exec ");
|
||||
|
||||
-23
@@ -19,11 +19,8 @@ import java.util.Map;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLDeclareItem;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerColumnDefinition.Identity;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerOutput;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelect;
|
||||
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
|
||||
@@ -116,26 +113,6 @@ public class SQLServerSchemaStatVisitor extends SchemaStatVisitor implements SQL
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(Identity x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(Identity x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLServerColumnDefinition x) {
|
||||
return visit((SQLColumnDefinition) x);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLServerColumnDefinition x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLServerExecStatement x) {
|
||||
return false;
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package com.alibaba.druid.sql.parser;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLPartition;
|
||||
import com.alibaba.druid.sql.ast.SQLPartitionValue;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
|
||||
|
||||
@@ -1083,6 +1083,16 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLColumnDefinition.Identity x) {
|
||||
print0(ucase ? "IDENTITY (" : "identity (");
|
||||
print(x.getSeed());
|
||||
print0(", ");
|
||||
print(x.getIncrement());
|
||||
print(')');
|
||||
return false;
|
||||
}
|
||||
|
||||
protected void visitColumnDefault(SQLColumnDefinition x) {
|
||||
print0(ucase ? " DEFAULT " : " default ");
|
||||
|
||||
@@ -286,6 +286,10 @@ public interface SQLASTVisitor {
|
||||
boolean visit(SQLColumnDefinition x);
|
||||
|
||||
void endVisit(SQLColumnDefinition x);
|
||||
|
||||
boolean visit(SQLColumnDefinition.Identity x);
|
||||
|
||||
void endVisit(SQLColumnDefinition.Identity x);
|
||||
|
||||
boolean visit(SQLDataType x);
|
||||
|
||||
|
||||
@@ -372,6 +372,13 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
|
||||
|
||||
public void endVisit(SQLColumnDefinition x) {
|
||||
}
|
||||
|
||||
public boolean visit(SQLColumnDefinition.Identity x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void endVisit(SQLColumnDefinition.Identity x) {
|
||||
}
|
||||
|
||||
public boolean visit(SQLDataType x) {
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user