Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
a121fcd7
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a121fcd7
编写于
3月 15, 2017
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
move skipParentheses from lexer to parser
上级
1c846566
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
53 addition
and
53 deletion
+53
-53
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLSelectParser.java
...ng/parser/sql/dialect/mysql/parser/MySQLSelectParser.java
+1
-1
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleSelectParser.java
.../parser/sql/dialect/oracle/parser/OracleSelectParser.java
+13
-13
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerSelectParser.java
...r/sql/dialect/sqlserver/parser/SQLServerSelectParser.java
+1
-1
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/lexer/Lexer.java
...dangdang/ddframe/rdb/sharding/parser/sql/lexer/Lexer.java
+0
-29
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractInsertParser.java
.../rdb/sharding/parser/sql/parser/AbstractInsertParser.java
+1
-1
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractSelectParser.java
.../rdb/sharding/parser/sql/parser/AbstractSelectParser.java
+2
-2
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractUpdateParser.java
.../rdb/sharding/parser/sql/parser/AbstractUpdateParser.java
+1
-1
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLExprParser.java
...ddframe/rdb/sharding/parser/sql/parser/SQLExprParser.java
+33
-4
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLStatementParser.java
...me/rdb/sharding/parser/sql/parser/SQLStatementParser.java
+1
-1
未找到文件。
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/mysql/parser/MySQLSelectParser.java
浏览文件 @
a121fcd7
...
...
@@ -103,6 +103,6 @@ public class MySQLSelectParser extends AbstractSelectParser {
getExprParser
().
getLexer
().
accept
(
DefaultKeyword
.
BY
);
}
}
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
}
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/oracle/parser/OracleSelectParser.java
浏览文件 @
a121fcd7
...
...
@@ -103,7 +103,7 @@ public class OracleSelectParser extends AbstractSelectParser {
while
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
REFERENCE
))
{
getExprParser
().
getLexer
().
nextToken
();
getExprParser
().
getLexer
().
accept
(
DefaultKeyword
.
ON
);
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
skipModelColumnClause
();
skipCellReferenceOptions
();
}
...
...
@@ -129,9 +129,9 @@ public class OracleSelectParser extends AbstractSelectParser {
skipQueryPartitionClause
();
getExprParser
().
getLexer
().
accept
(
OracleKeyword
.
DIMENSION
);
getExprParser
().
getLexer
().
accept
(
DefaultKeyword
.
BY
);
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
getExprParser
().
getLexer
().
accept
(
OracleKeyword
.
MEASURES
);
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
skipCellReferenceOptions
();
skipModelRulesClause
();
}
...
...
@@ -147,19 +147,19 @@ public class OracleSelectParser extends AbstractSelectParser {
}
}
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
DefaultKeyword
.
ITERATE
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
DefaultKeyword
.
UNTIL
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
}
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
private
void
skipQueryPartitionClause
()
{
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
PARTITION
))
{
getExprParser
().
getLexer
().
accept
(
DefaultKeyword
.
BY
);
if
(
getExprParser
().
getLexer
().
equal
(
Symbol
.
LEFT_PAREN
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
else
{
throw
new
UnsupportedOperationException
(
"Cannot support PARTITION BY without ()"
);
}
...
...
@@ -239,9 +239,9 @@ public class OracleSelectParser extends AbstractSelectParser {
private
void
parseSample
()
{
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
SAMPLE
))
{
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
BLOCK
);
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
SEED
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
}
}
...
...
@@ -253,9 +253,9 @@ public class OracleSelectParser extends AbstractSelectParser {
private
void
skipPartition
(
final
OracleKeyword
keyword
)
{
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
keyword
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
DefaultKeyword
.
FOR
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
}
}
...
...
@@ -263,14 +263,14 @@ public class OracleSelectParser extends AbstractSelectParser {
private
void
skipPivotClause
()
{
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
PIVOT
))
{
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
XML
);
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
else
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
UNPIVOT
))
{
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
INCLUDE
))
{
getExprParser
().
getLexer
().
accept
(
OracleKeyword
.
NULLS
);
}
else
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
OracleKeyword
.
EXCLUDE
))
{
getExprParser
().
getLexer
().
accept
(
OracleKeyword
.
NULLS
);
}
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/dialect/sqlserver/parser/SQLServerSelectParser.java
浏览文件 @
a121fcd7
...
...
@@ -62,7 +62,7 @@ public class SQLServerSelectParser extends AbstractSelectParser {
@Override
protected
void
parseJoinTable
()
{
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
DefaultKeyword
.
WITH
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
super
.
parseJoinTable
();
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/lexer/Lexer.java
浏览文件 @
a121fcd7
...
...
@@ -204,33 +204,4 @@ public class Lexer {
nextToken
();
}
}
/**
* 跳过小括号内所有的语言符号.
*
* @return 小括号内所有的语言符号
*/
public
final
String
skipParentheses
()
{
StringBuilder
result
=
new
StringBuilder
(
""
);
int
count
=
0
;
if
(
Symbol
.
LEFT_PAREN
==
token
.
getType
())
{
int
beginPosition
=
position
;
result
.
append
(
Symbol
.
LEFT_PAREN
.
getLiterals
());
nextToken
();
while
(
true
)
{
if
(
Assist
.
EOF
==
token
.
getType
()
||
(
Symbol
.
RIGHT_PAREN
==
token
.
getType
()
&&
0
==
count
))
{
break
;
}
if
(
Symbol
.
LEFT_PAREN
==
token
.
getType
())
{
count
++;
}
else
if
(
Symbol
.
RIGHT_PAREN
==
token
.
getType
())
{
count
--;
}
nextToken
();
}
result
.
append
(
input
.
substring
(
beginPosition
,
position
));
nextToken
();
}
return
result
.
toString
();
}
}
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractInsertParser.java
浏览文件 @
a121fcd7
...
...
@@ -102,7 +102,7 @@ public abstract class AbstractInsertParser {
while
(
getSkippedTokensBetweenTableAndValues
().
contains
(
exprParser
.
getLexer
().
getToken
().
getType
()))
{
exprParser
.
getLexer
().
nextToken
();
if
(
exprParser
.
getLexer
().
equal
(
Symbol
.
LEFT_PAREN
))
{
exprParser
.
getLexer
().
skipParentheses
();
exprParser
.
skipParentheses
();
}
}
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractSelectParser.java
浏览文件 @
a121fcd7
...
...
@@ -84,7 +84,7 @@ public abstract class AbstractSelectParser {
getExprParser
().
getLexer
().
nextToken
();
if
(
hasDistinctOn
()
&&
getExprParser
().
getLexer
().
equal
(
DefaultKeyword
.
ON
))
{
getExprParser
().
getLexer
().
nextToken
();
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
}
else
if
(
getExprParser
().
getLexer
().
equal
(
DefaultKeyword
.
ALL
))
{
getExprParser
().
getLexer
().
nextToken
();
...
...
@@ -201,7 +201,7 @@ public abstract class AbstractSelectParser {
parseTableCondition
(
getExprParser
().
getLexer
().
getToken
().
getEndPosition
()
-
getExprParser
().
getLexer
().
getToken
().
getLiterals
().
length
());
}
while
(
getExprParser
().
getLexer
().
skipIfEqual
(
DefaultKeyword
.
AND
));
}
else
if
(
getExprParser
().
getLexer
().
skipIfEqual
(
DefaultKeyword
.
USING
))
{
getExprParser
().
getLexer
().
skipParentheses
();
getExprParser
().
skipParentheses
();
}
parseJoinTable
();
}
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/AbstractUpdateParser.java
浏览文件 @
a121fcd7
...
...
@@ -76,7 +76,7 @@ public abstract class AbstractUpdateParser {
private
void
parseSetItem
()
{
if
(
exprParser
.
getLexer
().
equal
(
Symbol
.
LEFT_PAREN
))
{
exprParser
.
getLexer
().
skipParentheses
();
exprParser
.
skipParentheses
();
}
else
{
int
beginPosition
=
exprParser
.
getLexer
().
getToken
().
getEndPosition
();
String
literals
=
exprParser
.
getLexer
().
getToken
().
getLiterals
();
...
...
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLExprParser.java
浏览文件 @
a121fcd7
...
...
@@ -204,7 +204,7 @@ public class SQLExprParser {
return
new
CommonSelectItemContext
(
Symbol
.
STAR
.
getLiterals
(),
as
(),
index
,
true
);
}
if
(
getLexer
().
skipIfEqual
(
DefaultKeyword
.
MAX
,
DefaultKeyword
.
MIN
,
DefaultKeyword
.
SUM
,
DefaultKeyword
.
AVG
,
DefaultKeyword
.
COUNT
))
{
return
new
AggregationSelectItemContext
(
getLexer
().
skipParentheses
(),
as
(),
index
,
AggregationColumn
.
AggregationType
.
valueOf
(
literals
.
toUpperCase
()));
return
new
AggregationSelectItemContext
(
skipParentheses
(),
as
(),
index
,
AggregationColumn
.
AggregationType
.
valueOf
(
literals
.
toUpperCase
()));
}
StringBuilder
expression
=
new
StringBuilder
();
// FIXME 无as的alias解析, 应该做成倒数第二个token不是运算符,倒数第一个token是Identifier或char,则为别名, 不过CommonSelectItemContext类型并不关注expression和alias
...
...
@@ -330,7 +330,7 @@ public class SQLExprParser {
return
new
SQLIgnoreExpr
();
}
if
(
lexer
.
equal
(
Symbol
.
LEFT_PAREN
))
{
getLexer
().
skipParentheses
();
skipParentheses
();
skipRest
();
return
new
SQLIgnoreExpr
();
}
...
...
@@ -345,7 +345,7 @@ public class SQLExprParser {
if
(!
lexer
.
equal
(
Symbol
.
PLUS
,
Symbol
.
SUB
,
Symbol
.
STAR
,
Symbol
.
SLASH
))
{
return
result
;
}
getLexer
().
skipParentheses
();
skipParentheses
();
skipRest
();
return
new
SQLIgnoreExpr
();
}
...
...
@@ -359,7 +359,7 @@ public class SQLExprParser {
if
(
lexer
.
skipIfEqual
(
Symbol
.
DOT
))
{
getLexer
().
nextToken
();
}
getLexer
().
skipParentheses
();
skipParentheses
();
}
}
...
...
@@ -385,4 +385,33 @@ public class SQLExprParser {
}
return
new
SQLIgnoreExpr
();
}
/**
* 跳过小括号内所有的语言符号.
*
* @return 小括号内所有的语言符号
*/
public
final
String
skipParentheses
()
{
StringBuilder
result
=
new
StringBuilder
(
""
);
int
count
=
0
;
if
(
Symbol
.
LEFT_PAREN
==
getLexer
().
getToken
().
getType
())
{
int
beginPosition
=
getLexer
().
getToken
().
getEndPosition
();
result
.
append
(
Symbol
.
LEFT_PAREN
.
getLiterals
());
getLexer
().
nextToken
();
while
(
true
)
{
if
(
Assist
.
EOF
==
getLexer
().
getToken
().
getType
()
||
(
Symbol
.
RIGHT_PAREN
==
getLexer
().
getToken
().
getType
()
&&
0
==
count
))
{
break
;
}
if
(
Symbol
.
LEFT_PAREN
==
getLexer
().
getToken
().
getType
())
{
count
++;
}
else
if
(
Symbol
.
RIGHT_PAREN
==
getLexer
().
getToken
().
getType
())
{
count
--;
}
getLexer
().
nextToken
();
}
result
.
append
(
getLexer
().
getInput
().
substring
(
beginPosition
,
getLexer
().
getToken
().
getEndPosition
()));
getLexer
().
nextToken
();
}
return
result
.
toString
();
}
}
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/sql/parser/SQLStatementParser.java
浏览文件 @
a121fcd7
...
...
@@ -77,7 +77,7 @@ public final class SQLStatementParser {
do
{
exprParser
.
getLexer
().
skipUntil
(
DefaultKeyword
.
AS
);
exprParser
.
getLexer
().
accept
(
DefaultKeyword
.
AS
);
exprParser
.
getLexer
().
skipParentheses
();
exprParser
.
skipParentheses
();
}
while
(
exprParser
.
getLexer
().
skipIfEqual
(
Symbol
.
COMMA
));
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录