mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
fix merge build error
This commit is contained in:
@@ -109,6 +109,7 @@ public class OracleLexer extends Lexer {
|
||||
map.put("PARTITION", Token.PARTITION);
|
||||
map.put("TRUE", Token.TRUE);
|
||||
map.put("FALSE", Token.FALSE);
|
||||
map.put("CASCADE", Token.CASCADE);
|
||||
|
||||
map.put(",", Token.COMMA);
|
||||
map.put("(", Token.LPAREN);
|
||||
|
||||
+11
-3
@@ -2910,9 +2910,17 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
|
||||
String alias = x.getAlias();
|
||||
List<SQLName> columns = x.getColumnsDirect();
|
||||
if (alias != null) {
|
||||
print(' ');
|
||||
print0(ucase ? " AS " : " as ");
|
||||
print0(alias);
|
||||
SQLObject parent = x.getParent();
|
||||
if (parent instanceof SQLCreateIndexStatement
|
||||
|| parent instanceof SQLMergeStatement
|
||||
|| parent instanceof SQLDeleteStatement) {
|
||||
print(' ');
|
||||
print0(alias);
|
||||
} else {
|
||||
print(' ');
|
||||
print0(ucase ? " AS " : " as ");
|
||||
print0(alias);
|
||||
}
|
||||
}
|
||||
|
||||
if (columns != null && columns.size() > 0) {
|
||||
|
||||
@@ -160,7 +160,6 @@ public class Keywords {
|
||||
map.put("INOUT", Token.INOUT);
|
||||
|
||||
map.put("LIMIT", Token.LIMIT);
|
||||
map.put("CASCADE", Token.CASCADE);
|
||||
|
||||
DEFAULT_KEYWORDS = new Keywords(map);
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import static com.alibaba.druid.sql.parser.Token.CASCADE;
|
||||
|
||||
public class SQLExprParser extends SQLParser {
|
||||
public static final String[] AGGREGATE_FUNCTIONS;
|
||||
|
||||
@@ -1029,6 +1031,10 @@ public class SQLExprParser extends SQLParser {
|
||||
sqlExpr = new SQLIdentifierExpr("DATABASE");
|
||||
lexer.nextToken();
|
||||
break;
|
||||
case CASCADE:
|
||||
sqlExpr = new SQLIdentifierExpr("CASCADE");
|
||||
lexer.nextToken();
|
||||
break;
|
||||
case LOCK:
|
||||
sqlExpr = new SQLIdentifierExpr("LOCK");
|
||||
lexer.nextToken();
|
||||
@@ -4946,7 +4952,7 @@ public class SQLExprParser extends SQLParser {
|
||||
if (lexer.token() == Token.RESTRICT || lexer.identifierEquals(FnvHash.Constants.RESTRICT)) {
|
||||
option = SQLForeignKeyImpl.Option.RESTRICT;
|
||||
lexer.nextToken();
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.CASCADE)) {
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.CASCADE) || lexer.token == CASCADE) {
|
||||
option = SQLForeignKeyImpl.Option.CASCADE;
|
||||
lexer.nextToken();
|
||||
} else if (lexer.token() == Token.SET) {
|
||||
|
||||
@@ -500,6 +500,115 @@ public class SQLParserUtils {
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
public static List<String> split(String sql, DbType dbType) {
|
||||
if (dbType == null) {
|
||||
dbType = DbType.other;
|
||||
}
|
||||
|
||||
{
|
||||
Lexer lexer = createLexer(sql, dbType);
|
||||
lexer.nextToken();
|
||||
|
||||
boolean script = false;
|
||||
if (dbType == DbType.odps && lexer.token == Token.VARIANT) {
|
||||
script = true;
|
||||
}
|
||||
|
||||
if (script) {
|
||||
return Collections.singletonList(sql);
|
||||
}
|
||||
}
|
||||
|
||||
List list = new ArrayList();
|
||||
|
||||
Lexer lexer = createLexer(sql, dbType);
|
||||
lexer.config(SQLParserFeature.SkipComments, false);
|
||||
lexer.config(SQLParserFeature.KeepComments, true);
|
||||
|
||||
boolean set = false, paiOrJar = false;
|
||||
int start = 0;
|
||||
Token token = lexer.token;
|
||||
for (; lexer.token != Token.EOF; ) {
|
||||
if (token == Token.SEMI) {
|
||||
int len = lexer.startPos - start;
|
||||
if (len > 0) {
|
||||
String lineSql = sql.substring(start, lexer.startPos);
|
||||
lineSql = lineSql.trim();
|
||||
if (!lineSql.isEmpty()) {
|
||||
list.add(lineSql);
|
||||
}
|
||||
}
|
||||
start = lexer.startPos + 1;
|
||||
set = false;
|
||||
} else if (token == Token.CREATE) {
|
||||
lexer.nextToken();
|
||||
|
||||
if (lexer.token == Token.FUNCTION || lexer.identifierEquals("FUNCTION")) {
|
||||
lexer.nextToken();
|
||||
lexer.nextToken();
|
||||
if (lexer.token == Token.AS) {
|
||||
lexer.nextToken();
|
||||
if (lexer.token == Token.LITERAL_CHARS) {
|
||||
lexer.nextToken();
|
||||
token = lexer.token;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
lexer.startPos = sql.length();
|
||||
break;
|
||||
}
|
||||
|
||||
token = lexer.token;
|
||||
continue;
|
||||
} else if (set && token == Token.EQ && dbType == DbType.odps) {
|
||||
lexer.nextTokenForSet();
|
||||
token = lexer.token;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (lexer.identifierEquals("USING")) {
|
||||
lexer.nextToken();
|
||||
if (lexer.identifierEquals("jar")) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
}
|
||||
|
||||
if (lexer.token == Token.SET) {
|
||||
set = true;
|
||||
}
|
||||
|
||||
if (lexer.identifierEquals("ADD") && (dbType == DbType.hive || dbType == DbType.odps)) {
|
||||
lexer.nextToken();
|
||||
if (lexer.identifierEquals("JAR")) {
|
||||
lexer.nextPath();
|
||||
}
|
||||
} else {
|
||||
lexer.nextToken();
|
||||
}
|
||||
token = lexer.token;
|
||||
}
|
||||
|
||||
if (start != sql.length() && token != Token.SEMI) {
|
||||
int end = lexer.startPos;
|
||||
if (end > sql.length()) {
|
||||
end = sql.length();
|
||||
}
|
||||
String splitSql = sql.substring(start, end).trim();
|
||||
if (!paiOrJar) {
|
||||
splitSql = removeComment(splitSql, dbType).trim();
|
||||
} else {
|
||||
if (splitSql.endsWith(";")) {
|
||||
splitSql = splitSql.substring(0, splitSql.length() - 1).trim();
|
||||
}
|
||||
}
|
||||
if (!splitSql.isEmpty()) {
|
||||
list.add(splitSql);
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List<String> splitAndRemoveComment(String sql, DbType dbType) {
|
||||
if (dbType == null) {
|
||||
dbType = DbType.other;
|
||||
|
||||
@@ -2786,7 +2786,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (lexer.identifierEquals(FnvHash.Constants.CASCADE)) {
|
||||
if (lexer.identifierEquals(FnvHash.Constants.CASCADE) || lexer.token == CASCADE) {
|
||||
lexer.nextToken();
|
||||
stmt.setCascade(true);
|
||||
|
||||
@@ -2880,7 +2880,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
if (lexer.identifierEquals("RESTRICT")) {
|
||||
lexer.nextToken();
|
||||
stmt.setRestrict(true);
|
||||
} else if (lexer.identifierEquals("CASCADE")) {
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.CASCADE) || lexer.token == CASCADE) {
|
||||
lexer.nextToken();
|
||||
|
||||
if (lexer.identifierEquals("CONSTRAINTS")) { // for oracle
|
||||
|
||||
Reference in New Issue
Block a user