mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for db2 sql parser. for issue #2041
This commit is contained in:
@@ -20,6 +20,7 @@ import java.util.List;
|
||||
import com.alibaba.druid.sql.ast.*;
|
||||
import com.alibaba.druid.sql.ast.expr.*;
|
||||
import com.alibaba.druid.sql.ast.statement.*;
|
||||
import com.alibaba.druid.sql.dialect.db2.ast.stmt.DB2SelectQueryBlock;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlOrderingExpr;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
|
||||
import com.alibaba.druid.util.FnvHash;
|
||||
@@ -421,9 +422,27 @@ public class SQLSelectParser extends SQLParser {
|
||||
if (lexer.identifierEquals(FnvHash.Constants.CUBE)) {
|
||||
lexer.nextToken();
|
||||
groupBy.setWithCube(true);
|
||||
} else {
|
||||
acceptIdentifier("ROLLUP");
|
||||
} else if(lexer.identifierEquals(FnvHash.Constants.ROLLUP)) {
|
||||
lexer.nextToken();
|
||||
groupBy.setWithRollUp(true);
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.RS)
|
||||
&& JdbcConstants.DB2.equals(dbType)) {
|
||||
lexer.nextToken();
|
||||
((DB2SelectQueryBlock) queryBlock).setIsolation(DB2SelectQueryBlock.Isolation.RS);
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.RR)
|
||||
&& JdbcConstants.DB2.equals(dbType)) {
|
||||
lexer.nextToken();
|
||||
((DB2SelectQueryBlock) queryBlock).setIsolation(DB2SelectQueryBlock.Isolation.RR);
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.CS)
|
||||
&& JdbcConstants.DB2.equals(dbType)) {
|
||||
lexer.nextToken();
|
||||
((DB2SelectQueryBlock) queryBlock).setIsolation(DB2SelectQueryBlock.Isolation.CS);
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.UR)
|
||||
&& JdbcConstants.DB2.equals(dbType)) {
|
||||
lexer.nextToken();
|
||||
((DB2SelectQueryBlock) queryBlock).setIsolation(DB2SelectQueryBlock.Isolation.UR);
|
||||
} else {
|
||||
throw new ParserException("TODO " + lexer.info());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -559,5 +559,10 @@ public final class FnvHash {
|
||||
long ENDS = fnv1a_64_lower("ENDS");
|
||||
long BINARY = fnv1a_64_lower("BINARY");
|
||||
long ISOPEN = fnv1a_64_lower("ISOPEN");
|
||||
|
||||
long RS = fnv1a_64_lower("RS");
|
||||
long RR = fnv1a_64_lower("RR");
|
||||
long CS = fnv1a_64_lower("CS");
|
||||
long UR = fnv1a_64_lower("UR");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user